假设我有这样的一个命名空间:
var myNamespace = {
foo: function() {
},
bar: function() {
}
};
如何将这段代码拆分成定义foo
和bar
的不同文件?
我不用担心加载时间 - 在部署之前,我会将其合并为一个文件。
假设我有这样的一个命名空间:
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...
}
每个文件都按照这个模式进行:
(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);
}(NS = NS || {}));
时,会触发引用错误:NS未定义(请参见此jsfiddle示例)。 - Eregrith