Отделение jQuery Mobile (1.1.0) от AMD (RequireJS) - PullRequest
4 голосов
/ 01 марта 2012

Я пытаюсь включить jQuery Mobile в проект, который использует RequireJS для AMD, однако я не хочу загружать jQuery Mobile в качестве модуля AMD.Идея заключается в том, что мы будем использовать AMD для логики, специфичной для приложения, но любые зависимости от внешних библиотек, такие как jQuery, будут переведены в глобальную область просто путем определения тегов сценария вручную.

У меня проблема в определениитег сценария для jQuery mobile до тега сценария RequireJS, кажется, заставляет RequireJS определить анонимный модуль и создать конфликт, который я не понимаю.Я посмотрел на код jQuery и jQuery Mobile, и они настроены на условный вызов метода define(), если он существует.Поскольку я включаю эти теги перед загрузкой RequireJS, они не должны вызывать define().Я дважды проверил это с помощью точек останова, а они действительно этого не делают.

Когда я включаю jQuery Mobile, я получаю следующую ошибку:

Error: Mismatched anonymous define() module: [object Object]

Я не понимаю, как это происходит, если jQuery Mobileне звонит define().Что я здесь не так делаю?Это что-то с новой условной поддержкой AMD в jQuery Mobile?

1 Ответ

4 голосов
/ 01 марта 2012

Для подтверждения вы должны использовать встроенную версию jQuery mobile, и вы должны включить ее перед тегом require.js, например, так: обратите внимание, что jquery включен как тег скрипта, так как от него зависит jQuery mobile:

<script src="scripts/jquery.js"></script>
<script src="scripts/jquery.mobile.js"></script>
<script src="scripts/require.js" data-main="scripts/app"></script>

Я ожидаю, что это сработает.Ошибка, которую вы видите, может быть сгенерирована, если у вас есть такие сценарии:

<script src="scripts/require.js" data-main="scripts/app"></script>
<script src="scripts/jquery.js"></script>
<script src="scripts/jquery.mobile.js"></script>

Я считаю, что это скорее проблема с RequireJS, а не с jQuery mobile, которую я хочу исправить для RequireJS 1.1.Но первый набор тегов скрипта должен работать.

Если этого не произойдет, было бы интересно узнать больше о том, как JS-модуль вашего приложения использует jQuery и jQuery mobile.

...