最近版本的 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”这个,无扩展名的模块引用允许要遵循的模块 IDpaths
和maps
别名,而带有的 ID.js
被视为文字并且从不翻译。