将一个javascript命名空间分割成多个文件
比方说,我有这样的名字空间:
var myNamespace = { foo: function() { }, bar: function() { } };
将这段代码分离成分别定义foo
和bar
文件的最好方法是什么?
我不担心加载时间 – 我将在部署之前将其连接回一个文件。
在每个文件的开始处:
if(myNameSpace === undefined) { var myNameSpace = {}; }
文件1:
myNamespace.foo = function()...
文件2:
myNamespace.bar = function()...
// File1: // top level namespace here: var myNamespace = myNamespace || {}; // File2: myNamespace.foo = function() { // some code here... }
我没有代表给eavicahy的回答添加评论。
在每个文件中遵循这种模式…
(function(nameSpace) { nameSpace.foo = function() { ... }; })(window.nameSpace = window.nameSpace || {});
这种装载顺序是不重要的。
简单定义在这样的单独文件中:
文件1:
var myNamspace = {};
文件2:
myNamespace.foo = function()...
文件3:
myNamespace.boo = function()...
只要确保你以正确的顺序加载文件。
(function (NS) { NS.Uber = function Uber() { this.super = new NS.Super(); // yes, it works! }; // }(NS = NS || {})); // ------------- other file ----------------- (function (NS) { NS.Super = function Super() { this.uber = new NS.Uber(); // yes, it will also work! }; // }(NS = NS || {})); // -------------- application code ------------ var uber = new NS.Uber(); console.log(uber.super); var super = new NS.Super(); console.log(super.uber);