gpt4 book ai didi

javascript - 使用多个文件时如何将函数保留在全局命名空间之外?

转载 作者:行者123 更新时间:2023-12-03 05:16:59 24 4
gpt4 key购买 nike

上次我用 JS 构建了一个大型应用程序,我使用了 require.js - 这很棒,但可能会产生相当大的开销,特别是如果你不想异步加载文件,所以这次我要没有它。

这次我用纯 JS 编写,并使用 Grunt 连接和缩小所有内容(我是这里的 Grunt n00b)。因为我将所有函数保存在单独的文件中,所以我无法像使用单个文件那样将所有内容包装在一个闭包中。将所有函数排除在全局命名空间之外的最佳解决方案是什么?

我不确定我是否需要一个完整的依赖管理解决方案,但如果它轻量且简单,我会考虑一个。

最佳答案

如果您想在没有任何依赖管理工具的情况下执行此操作,您可以使用 Revealing Module Pattern 等。和命名空间,简化示例:

顶部/应用程序文件

window.SomeApplication = (function () {
// Add functions you want to expose to this
this.require= function (path) { // Creates namespace if not already existing, otherwise returns reference to lowest level object in path
var current = window,
i;

path = path.split('.');
for (i = 0; i < path.length; ++i) {
if (!current[path[i]]) {
current[path[i]] = {};
}
current = current[path[i]];
}

return current;
};

return this;
})();

其他一些文件

SomeApplication.require('SomeApplication.SomeSubNamespace').SomeModule = (function () {
// Module code

return this;
})();

然后使用 grunt concat 并首先指定顶部文件。这样,您将仅在窗口对象上公开一项,并且可以通过 window.SomeApplication.SomeSubNamespace.SomeModule 访问您的模块。

关于javascript - 使用多个文件时如何将函数保留在全局命名空间之外?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41557864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com