我从这里阅读 requirejs 文档api
backgroundColor
但我没有 deps shim 的一部分。
为什么我应该使用deps,这是否意味着如果我只加载requirejs.config({
baseUrl: 'js/',
paths: {
app: 'app/js',
jquery: '',
},
shim: {
jquery: {
exports: '$',
},
knockout: {
deps: ['jquery', 'bootstrap', 'underscore'],
exports: 'KnockOut'
},
underscore: {
exports: '_'
},
a:{
deps: ['x','b'],
exports: 'a'
}
}
});
或其他什么
x
和b
)会自动加载
a
我尝试过但无法自动加载 require(['a'], function(a){
});
和x
。
请任何人解释一下为什么以及何时应该使用deps。
感谢。
答案 0 :(得分:2)
RequireJS加载符合异步模块定义(AMD)的模块。 AMD模块必须调用AMD加载程序提供的名为define
的函数。基本呼叫是这样的:
define(["a", "b", "c", ...], function (a, b, c, ...) {
});
第一个参数是正在定义的模块所依赖的模块列表。第二个参数是构建正在定义的模块的工厂函数。 RequireJS将依赖项中列出的模块传递给它。还有其他方法可以调用define
,但上面的例子很典型。
这一切都很好但是如果你想加载由第三方生产但不是AMD模块的库会发生什么? shim
选项允许告诉RequireJS如何加载这些模块。对于AMD模块,您可以在传递给define
的数组中指定依赖项,但是对于非AMD模块,您可以在shim
选项中定义包含依赖项列表的deps
。它包含在加载匀化模块之前必须加载的模块的名称。在您的示例中,必须在x
之前加载b
和a
。