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

标签 javascript

只是想知道这个...

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

模块代码位于即时函数中这一事实足以触发已经加载其他模块的要求吗?

如果需要,我准备研究 RequireJS 库,但只是想先了解一下我的做法是否合适。

最佳答案

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

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

一个例子:

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 上运行,一旦所有文件都已加载。

关于JavaScript 文件加载顺序和依赖管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4914810/

相关文章:

javascript - Jquery id 到带有 freemarker 列表的 javascript 数组中

javascript - typescript 错误#70006,类型引用任何

javascript - 带单选按钮的 Angular 重复表行

javascript - 在视频上叠加 DOM 元素

javascript - 验证名字和姓氏

javascript - 为添加到 DOM 的元素添加 Click 事件

JavaScript,循环具有不同数量的键值对的对象

javascript - 语义 ui 如何使用 javascript 启用或禁用下拉菜单

javascript - 使用 jquery 获取外部父 UL

javascript - 我可以将从 Canvas 上下文创建的渐变应用到其他 Canvas 上下文吗?