3

У меня возникла проблема с использованием плагина knockout.mapping в сочетании с RequireJS. В основном, сайт, на котором размещается мое приложение, загружает нокаут, knockout.mapping и requirejs в этом порядке.Плагин для нокаута для сопоставления с требованием: ошибка, вызванная сбоем: неправильный модуль анонимного определения()

<script src="http://127.0.0.1/scripts/require.js" type="text/javascript"></script> 
<script src="http://127.0.0.1/scripts/knockout.js" type="text/javascript"></script> 
<script src="http://127.0.0.1/scripts/knockout.mapping.js" type="text/javascript"></script> 

Даже не делая ничего дальше, я получаю эту ошибку несоответствия. Есть ли какой-то порядок, который я не понимаю?

/// /// Update

Я написал эти два теста:

В принципе, то, что вы видите, что, если я загружаю require.js в мой проект на своем собственном, до плагина сопоставления, тогда плагин сопоставления становится невидимым. Я предполагаю, что это связано с тем, как использовать плагин для отображения, требуя, чтобы он требовал нокаута ... но я не могу пригвоздить, почему он терпит неудачу.

/// /// второе обновление

Кажется, сценарий важно здесь, так что я собираюсь предоставить немного больше контекста.

Изображение веб-приложения, которое определяет knockout.js и knockout.mapping.js в тегах скриптов. Затем сторонний виджет загружается на страницу, которая использует requireJS для установления своих зависимостей. Это то, что, похоже, вызывает проблему. Поскольку некоторые библиотеки были загружены через старую школу, ручной способ и другие были загружены с использованием require, require, похоже, вступает в конфликт с контекстом существующих библиотек.

Если я удаляю ссылку, требуемую от приложения-хозяина, я получаю сообщение об ошибке, когда возвращаюсь, чтобы увидеть, существует ли ko.mapping. Это очевидно из-за того, что виджет требовал от нокаута, который каким-то образом нарушил его связь с плагином сопоставления.

Мне кажется, мне нужен кто-то, кто очень хорошо знаком с RequireJS, чтобы прокомментировать эти библиотеки. Очевидно, что когда я создаю виджет для анонимного потребления, я не буду знать, как или если потребители используют requireJS.

/// третий Update /// Попытка прояснить этот вопрос как можно лучше, может быть, это будет иметь больше смысла:

Есть ли четко определенный шаблон, в котором вы могли бы придать виджет, который использует RequireJS, в существующую веб-страницу, которая загружает ресурсы вручную? Казалось бы, это невозможно, так как RequireJS просто удваивает нагрузку на то, что традиционная страница, возможно, уже загрузила.

ответ

3

Ответ заключается в загрузке всех ваших Java-скриптов с помощью загрузчика модуля и не оглядываться назад. Я всерьез думаю, что это единственное решение. Разработка виджета, который использует загрузчик модулей в мире, где большинство клиентских сайтов еще не дошли до этого, все же заставляет вас использовать какой-то старый школьный менталитет.

Теперь, если я мог бы просто получить +50 очков я просрал по этому вопросу назад :)

+1

В вашем вопросе вы спросили, как добавить проект requireJS в другое место третьего лица, не зная, чего ожидать. Ваш ответ не дает решения. Я предлагаю снять его, как только разрешить, пока кто-то не сможет предоставить что-то более конкретное. –