要求在垫片配置中使用deps有什么用处

时间:2017-01-22 09:17:25

标签: javascript requirejs

我从这里阅读 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' } } }); 或其他什么

,这些文件(xb)会自动加载
a

我尝试过但无法自动加载 require(['a'], function(a){ }); x。 请任何人解释一下为什么以及何时应该使用deps。 感谢。

1 个答案:

答案 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之前加载ba