RequireJS加载顺序依赖

时间:2014-11-03 02:39:53

标签: javascript requirejs

我使用RequireJS定义下面的模块:

define('mod1', ['jquery'], function($){
    return function mod1(){
        //do something
    }
});

define('mod2', ['jquery','jquery.plugin1','mod1'], function($, mod1){
     var mod2 = mod2||{};
     mod2.A = function(){
         return new mod1();
     }
})

如果像上面那样定义mod2,当代码执行到new mod1()时,它将抛出mod1 is undefined。如果我在下面定义mod2,那么工作正常。

define('mod2', ['mod1','jquery','jquery.plugin1'], function(mod1,$){
     var mod2 = mod2||{};
     mod2.A = function(){
         return new mod1();
     }
})

有人可以解释原因以及在加载依赖项时RequireJS的工作原理吗?

1 个答案:

答案 0 :(得分:1)

这不起作用:

define('mod2', ['jquery','jquery.plugin1','mod1'], function($, mod1){

因为您为匿名函数提供的参数从依赖列表中获取值之前的相同顺序所以$参数获取模块{{1}的值并且jquery参数从mod1获取其值,并且模块jquery.plugin1的值作为第3个参数传递,但您必须使用自动变量{{1}得到它,因为你没有指定第三个参数。

请注意,jQuery插件通过修改mod1而不是返回值来自行安装,因此插件arguments 的值作为模块$

执行此操作时,它可以正常运行:

jquery.plugin1

因为依赖关系的顺序正确地反映在参数的顺序中。