2014-02-11 3 views
2

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

Я не понимаю, что означает совместимость с AMD или как это работает? Я ищу в письменном виде свои собственные модули AMD-совместимые, но я хочу, чтобы убедиться, что я делаю вещи правильный путь ...

requirejs.config({ 
    baseUrl: 'js', 
    paths: { 
     "jquery": "//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.0/jquery.min" 
    } 
}); 

require(["jquery"], function(jquery) { 
    console.log(jquery); 
    console.log($); // This works, but I wouldn't expect it to. 
}); 

ответ

1

JQuery создает глобальную переменную $, потому что JQuery не предназначен, чтобы быть AMD, хотя он и поддерживает его. Вы можете обернуть JQuery, чтобы удалить глобальную область $, как описано here, если вы прочитали раздел JQuery, он объясняет причины, по которым существует глобальная переменная. Я помню, как это делалось, когда я впервые начал использовать requirejs, но это вызвало некоторые проблемы с плагинами ... поскольку я помню

Смежные вопросы