Ответ 1
В начале каждого файла:
if(myNameSpace === undefined) {
var myNameSpace = {};
}
Файл 1:
myNamespace.foo = function()...
Файл 2:
myNamespace.bar = function()...
Скажем, у меня такое пространство имен:
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);