只是想知道这个...
我有几个单独的javascript文件,它们都包含基于模块模式的代码。一些模块将其他一些模块作为依赖项。如果我知道在加载页面之前不会在HTML上调用任何代码,那么加载文件的顺序是否仍然很重要?
模块代码是否位于即时功能内,足以触发其他模块已被加载的要求?
如果需要,我准备调查RequireJS库,但只是想知道我的目标是否正常。
答案 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引擎在下载后立即开始编译脚本,因此可能会影响它。但脚本仍将运行!