Ответ 1
Последние версии RequireJS позволяют притворяться, что простые JS файлы на самом деле являются модулями AMD, которые просто ничего не возвращают.
Самая последняя версия, которую я пробовал - 2.1.4 - фактически позволяет обрабатывать простые JS файлы, такие как модули. Пример:
require(
[
'path/to/module' // <- AMD module
,'path/to/plainjs' // <- actually a plain JS file
]
, function(module, plain){
// module will be per define in that file.
// plain will be 'undefined' type
}
)
Вы можете просто смешать модули-подобные ссылки на простые JS файлы. Пока они загружаются в правильном порядке, они будут обновлять все глобальные переменные, которые они обновляют, и вы получаете то, что хотите. Пример:
require(['js/underscore'], function(){
// nesting to insure Underscore, a prereq to BackBone
// completes loading before backbone starts
require(
[
'path/to/module' // <- AMD module
,'js/backbone' // <- actually a plain JS file
]
, function(module){
// module will be per define in that file.
window.BackBone // is available for you
}
)
})
Обратите внимание, что в то время как RequireJS требует, чтобы вы добавляли ".js" в конец простых JS файлов, чтобы указать, что они простые JS, в приведенных выше примерах вы НЕ используете ".js". Это, без расширения модуль позволяет идентификатору модуля следовать алиасам paths
и maps
, тогда как идентификаторы с .js
рассматриваются как литералы и никогда не переводятся.