javascript - 向大型项目添加 javascript 命名空间

标签 javascript

我有一个巨大的项目,大约有 4000 行 JavaScript。 该项目从未打算在另一个项目站点中使用,它始终被规划为单端应用程序。 遗憾的是,客户改变了他的意见,现在它应该与同一个单一站点应用程序中包含的其他 3 个项目一起运行。

现在我必须确保没有一个变量或方法可以从另一个加载的 js 代码中“意外”删除或触及,例如如果下一个项目像“var mPath =/NowNewPath/”一样加载,“var mPath =/MyPath”当然可以被覆盖。

如何添加以确保不会发生这种情况? 添加命名空间对吗? 有什么想法可以解决所有 4000 行代码的问题吗?

最佳答案

首先,将所有内容包装在 Immediately-Invoked-Function-Expression 中将所有变量包含在一个隔离的范围内。

(function() {
    /* all 4000 lines of code */
})();

其次,确保没有意外的全局变量 - 使用 var 关键字声明局部变量。

(function() {
    /* if you see this within the 4000 lines of code */
    somePath = "abc";
    /* change to this */
    var somePath = "abc";
})();

最后,仅公开一个(或尽可能少的)全局变量作为库的入口点。

/* "myLib" should be your globally-unique namespace */
myLib = (function() {
    /* the 4000 lines of code */

    return {
        /* attach functions and variables */
        somePath: somePath;
    };
})();

alert(somePath); // undefined
alert(myLib.somePath); // "abc"

关于javascript - 向大型项目添加 javascript 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25739601/

相关文章:

javascript - 使用 JavaScript 将数据插入数组

javascript - 带有两个提交按钮的 Angular 模态在 "enter"上触发

javascript - Nodejs : load javascript from external file containing functions

javascript - 使用正则表达式查找阿拉伯语单词

javascript - 除非单击提交按钮,否则离开页面警报

javascript - Jquery Cycle2 幻灯片 - 从服务器加载图像,ASP .NET

javascript - 如何使表格 <td> 和 <tr> 全宽?

javascript - 如何键入导出的 RelayContainer

javascript - 8皇后问题。这段 JavaScript 代码如何工作?

javascript - 如何查看Backbone中的几个属性变化?