在这个小样本应用中,为什么index-b.js
在index-c.js
之前执行?
由于index-c
是index-a
的依赖关系,而index-a
是要在index-b
之前加载的设置,因此在我看来index-c
应首先执行
/* index.js */
define([ "./index-a", "./index-b" ], function(){
console.log("index executing");
});
/* index-a.js */
define([ "./index-c" ], function(){
console.log("index-a executing");
});
/* index-b.js */
define(function(){
console.log("index-b executing");
});
/* index-c.js */
define(function(){
console.log("index-c executing");
});
运行示例:http://fitzgeraldmedia.net/requirejs/index.html(检查控制台)
答案 0 :(得分:3)
index.js中define()调用中模块的顺序并不意味着任何同步依赖,因此index-a在index-b之前并不真正“设置为加载”。 index.js中的define()调用只是声明回调函数中的代码依赖于index-a和index-b。如果index-b依赖于index-a,那么index-b应该将index-a列为其define()调用中的依赖项。
所以你的index.js文件看起来像这样:
define([ "./index-b" ], function(){
console.log("index.js executing");
});
并且你的index-b.js文件看起来像这样:
define([ "./index-a" ], function(){
console.log("index-b.js executing");
});
答案 1 :(得分:0)
尝试在配置的shim
属性中包含依赖项
'indexC': {
deps: ['index-a']
},
这可确保在加载index-a
index-c
requirejs.config({
baseUrl: "lib/",
paths: {
'jquery' : "vendor/jquery-2.0.2.min",
'indexA' : 'app/ndex-a',
'indexB' : 'app/ndex-b',
'indexC' : 'app/ndex-c',
'index' : 'app/ndex',
}
});
因为index-a
取决于index-c
替换
define([ "app/index-c" ], function(){
与
require([ "app/index-c" ], function(){