我正在编写客户端代码,并想编写多个模块化的 JS 文件,这些文件可以在防止全局命名空间污染的同时进行交互。
索引.html
<script src="util.js"></script>
<script src="index.js"></script>
实用程序.js
(function() {
var helper() {
// Performs some useful utility operation
}
});
index.js
(function () {
console.log("Loaded index.js script");
helper();
console.log("Done with execution.");
})
这段代码很好地将实用程序函数保存在一个单独的文件中,并且不会污染全局命名空间。但是,助手实用程序函数将不会被执行,因为“助手”存在于单独的匿名函数命名空间中。
另一种方法是将所有 JS 代码放在一个文件中,或者在全局命名空间中使用单个变量,如下所示:
var util_ns = {
helper: function() {
// Performs some useful utility operation.
},
etc.
}
这两种方法在模块化和干净的命名空间方面都有缺点。
我习惯于在 Node.js 领域工作(服务器端),我可以在另一个 Javascript 文件中“要求”一个 Javascript 文件,从而有效地将 util.js 绑定注入 index.js 命名空间。
我想在这里(但在客户端)做一些类似的事情,这将允许将代码编写在单独的模块化文件中,而不是在全局命名空间中创建任何变量,同时允许访问其他模块(例如实用程序模块)。
这是否以简单的方式可行(没有库等)?
如果不是,在使客户端 JS 表现得更像 Node 和 npm 的领域中,我知道存在 requireJS、browserify、AMD 和 commonJS 标准化尝试。但是,我不确定每种方法的优缺点和实际用法。