JavaScript文件加载顺序和依赖关系管理

时间:2011-02-06 17:10:32

标签: javascript

只是想知道这个...

我有几个单独的javascript文件,它们都包含基于模块模式的代码。一些模块将其他一些模块作为依赖项。如果我知道在加载页面之前不会在HTML上调用任何代码,那么加载文件的顺序是否仍然很重要?

模块代码是否位于即时功能内,足以触发其他模块已被加载的要求?

如果需要,我准备调查RequireJS库,但只是想知道我的目标是否正常。

2 个答案:

答案 0 :(得分:8)

如果可能的话,设置依赖项,以便在加载javascript文件时加载和设置所有模块(即使用自执行函数)。

然后在.init块中的所有模块上调用.ready或等效函数。这样,您可以在加载所有文件后显式调用任何需要依赖的功能。

一个例子:

foo.js
(function() { 
    function initFoo() { ... }
    ...
    window.namespace.foo = {
         init: initFoo
    }
}());

bar.js
(function() { 
    function initBar() { ... }
    ...
    window.namespace.bar = {
         bar: initBar
    }
}());

main.js
(function() {
     $.ready(function() {
          window.namespace.foo.init();
          window.namespace.bar.bar(); // dependancies on foo
     });

}());

任何没有依赖关系的代码都可以在foo.js&的封闭中执行。所有文件加载后,bar.js上的init函数可以调用.ready和任何相关代码。

答案 1 :(得分:1)

如果在执行开始时加载了所有文件,则加载顺序无关紧要。

可能可能一些JavaScript引擎在下载后立即开始编译脚本,因此可能会影响它。但脚本仍将运行!