Я прочитал документ requirejs отсюда API
requirejs.config({
shim: {
'backbone': {
//These script dependencies should be loaded before loading
//backbone.js
deps: ['underscore', 'jquery'],
//Once loaded, use the global 'Backbone' as the
//module value.
exports: 'Backbone'
},
'underscore': {
exports: '_'
},
'foo': {
deps: ['bar'],
exports: 'Foo',
init: function (bar) {
//Using a function allows you to call noConflict for
//libraries that support it, and do other cleanup.
//However, plugins for those libraries may still want
//a global. "this" for the function will be the global
//object. The dependencies will be passed in as
//function arguments. If this function returns a value,
//then that value is used as the module export value
//instead of the object found via the 'exports' string.
return this.Foo.noConflict();
}
}
}
});
но я не получаю регулировочную шайбу части. почему я должен использовать прокладку и как мне настроить, могу ли я получить дополнительные разъяснения
пожалуйста, кто-нибудь может объяснить на примере, почему и когда мы должны использовать прокладку. Спасибо.
Underscore
иBackbone
здесь используется как обычно, чтоshim
делать в этом случае? Могу я использоватьrequire( function() { _.extend({}); })
? Это понимает_
?Согласно документации API RequireJS, оболочка shim позволяет
- Настройка зависимостей
Допустим, у вас есть 2 модуля javascript (moduleA и moduleB), и один из них (moduleA) зависит от другого (moduleB). Оба они необходимы для вашего собственного модуля, поэтому вы указываете зависимости в require () или define ().
Но поскольку require следует за AMD, вы не знаете, какой из них будет загружен раньше. Здесь на помощь приходит прокладка.
Это гарантирует, что moduleB всегда выбирается до загрузки moduleA.
- Настройка экспорта
Экспорт Shim сообщает RequireJS, какой член глобального объекта (окна, если, конечно, вы находитесь в браузере) является фактическим значением модуля. Допустим, moduleA добавляет себя к
window
'modA' (точно так же, как jQuery и подчеркивание делают как $ и _ соответственно), затем мы делаем наш экспорт значением 'modA'.Это даст RequireJS локальную ссылку на этот модуль. Глобальный modA тоже будет существовать на странице.
-Пользовательская инициализация для старых скриптов "глобального браузера"
Это, вероятно, самая важная функция конфигурации оболочки, которая позволяет нам добавлять «глобальные браузерные», «не-AMD» скрипты (которые также не следуют модульному шаблону) в качестве зависимостей в нашем собственном модуле.
Допустим, moduleB - это простой старый javascript с двумя функциями funcA () и funcB ().
Хотя обе эти функции доступны в области окна, RequireJS рекомендует нам использовать их через их глобальный идентификатор / дескриптор, чтобы избежать путаницы. Поэтому настройте прокладку как
Значение, возвращаемое функцией init, используется в качестве значения экспорта модуля вместо объекта, найденного через строку «exports». Это позволит нам использовать funcB в нашем собственном модуле как
Надеюсь, это помогло.
источник
Вы должны добавить пути в requirejs.config для объявления, например:
источник