Вопрос

Я впервые использую requirejs в проекте. Я работаю в среде, в которой уже есть много JavaScript, и я ищу чистые способы представить свой собственный код.

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти модуль jQuery, который я могу загрузить, который не Clobber существующий jQuery.

Я был удивлен, что даже require-jquery.js представляет глобальную версию jQuery. Есть ли способ загрузить jQuery в качестве модуля, не представляя никаких глобалов?

Это было полезно?

Решение

JQUERY 1.7 поддерживает загрузку AMD. Но хитрость заключается в том, чтобы избежать конфликта на наименовании модуля, поскольку jQuery жестко кодирует свое собственное название модуля как «jQuery». Если вы определяете другой модуль как «jQuery» (скажем, в свойстве «путей» в вашей конфигурации requirejs), это вызовет указанный конфликт.

Чтобы загрузить jQuery в ваш приложение для приложений, определите модуль, такой как «jQuery-Loader», и когда вы хотите загрузить jQuery, сделайте это через «jquery-loader»:

define(['path/to/jquery.min'], function () {
    return jQuery.noConflict(true);
});

Требование JS будет «кэшировать» вашу ссылку на jQuery, так что NoConflict будет работать только в первый раз, когда загружается jQuery-Loader.

Другие советы

Несколько версий jQuery на одной странице плохие. Прекратите взломать и обновить jQuery или использовать старую версию.

Что касается сохранения $ безопасная попытка

(function($) {
    // requirejs inclusion block for loading


}(jQuery.noConflict(true));

Если вы пройдете true к .noConflict он заменит старый jQuery переменная и не разрушать это во всем мире.

Это означает, что вы можете пройти его тихо. Скажи, что у тебя есть

<script src="jquery-1.2">
<script src="jquery-1.5">

Тогда использование приведенного выше кода поместит 1.2 $ & jQuery Вернуться в глобальное пространство и дать вам 1,5 jQuery как местный $ в вашем закрытии

Я снова советую Снова Использование нескольких версий, потому что это правильный беспорядок и кошмар обслуживания.

Если вы используете 1.5, вы также можете использовать .sub чтобы позволить вам расширить jQuery локально без повреждения глобального jQuery

Загрузите сценарий jQuery, а затем используйте var myJ = jQuery.noConflict();

или какую -либо яркую переменную, которую вы хотите

http://docs.jquery.com/using_jquery_with_other_libraries

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top