1

在这个小示例应用程序中,为什么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(检查控制台)

4

2 回答 2

3

index.js 中的 define() 调用中的模块顺序并不意味着任何同步依赖关系,因此 index-a 在 index-b 之前并没有真正“设置为加载”。您在 index.js 中的 define() 调用只是说明回调函数中的代码依赖于 index-a 和 index-b。如果 index-b 依赖于 index-a,那么 index-b 应该在其 define() 调用中将 index-a 列为依赖项。

所以你的 index.js 文件看起来像这样:

define([ "./index-b" ], function(){

    console.log("index.js executing");
});

你的 index-b.js 文件看起来像这样:

define([ "./index-a" ], function(){

    console.log("index-b.js executing");

});
于 2013-06-03T20:58:14.680 回答
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(){
于 2013-06-03T18:35:49.060 回答