在这个简单的需求示例中,为什么是n't "c"先执行

in this simple requirejs example, why isn't "c" executing first?

本文关键字:quot 执行 为什么 简单 需求      更新时间:2023-09-26

在这个小示例应用程序中,为什么index-b.jsindex-c.js之前执行?

由于index-cindex-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 (check console)

在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");
});

尝试在配置的shim属性中包含依赖项

 'indexC': {
      deps: ['index-a']
  },

确保在加载index-c之前加载index-a

    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(){