Разделение пространства имен JavaScript на несколько файлов - PullRequest
40 голосов
/ 01 марта 2011

Допустим, у меня есть такое пространство имен:

var myNamespace = {
    foo: function() {
    },
    bar: function() {
    }
};

Каков наилучший способ разбить этот код на файлы, определяющие foo и bar отдельно?

I 'я не беспокоюсь о времени загрузки - перед развертыванием я объединю его обратно в один файл.

Ответы [ 5 ]

43 голосов
/ 01 марта 2011

В начале каждого файла:

if(myNameSpace === undefined) {
  var myNameSpace = {};
}

Файл 1:

myNamespace.foo = function()...

Файл 2:

myNamespace.bar = function()...
13 голосов
/ 27 ноября 2012
// File1:
// top level namespace here:
var myNamespace = myNamespace || {};

// File2:
myNamespace.foo = function() {
    // some code here...
}
8 голосов
/ 02 ноября 2015

В каждом файле следуйте этой схеме:

(function(nameSpace) {
    nameSpace.foo = function() { ... };
})(window.nameSpace = window.nameSpace || {});

Таким образом, порядок загрузки не важен.

2 голосов
/ 01 марта 2011

Простое определение в отдельных файлах, как это:

Файл 1:

var myNamspace = {};

Файл 2:

myNamespace.foo = function()...

Файл 3:

myNamespace.boo = function()...

Просто убедитесь, что вы загружаете файлы в правильном порядке.

1 голос
/ 11 марта 2015
(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);
...