3 回答
TA贡献1864条经验 获得超6个赞
现在,RequireJS 2.X使用新shim配置可以更好地有机解决非AMD模块,例如Backbone&Underscore 。
该shim配置易于使用:(1)声明依赖项(deps)(如果有)(可能来自paths配置,也可能是有效路径本身)。(2)(可选)从要填充的文件中指定全局变量名称,该名称应导出到需要它的模块函数中。(如果不指定导出,则只需要使用全局变量,因为没有东西会传递到您的require / define函数中。)
这是shim加载Backbone 的简单示例用法。即使没有任何依赖性,它也会为下划线添加导出。
require.config({
shim: {
underscore: {
exports: '_'
},
backbone: {
deps: ["underscore", "jquery"],
exports: "Backbone"
}
}
});
//the "main" function to bootstrap your code
require(['jquery', 'underscore', 'backbone'], function ($, _, Backbone) { // or, you could use these deps in a separate module using define
});
注意:此简化的代码假定jquery,bone和underscore位于与此“ main”代码相同的目录下的名为“ jquery.js”,“ backbone.js”和“ underscore.js”的文件中(这成为require的baseURL )。如果不是这种情况,则需要使用path config。
我个人认为,使用内置shim功能,不使用分叉版本的Backbone&Underscore的优势要胜过使用另一个流行答案中推荐的AMD叉的优势,但是无论哪种方式都可以。
添加回答
举报