web-dev-qa-db-ja.com

JavaScript名前空間を複数のファイルに分割する

私がそのような名前空間を持っているとしましょう:

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

このコードをfoobarを別々に定義するファイルに分割する最良の方法は何ですか?

読み込み時間については心配していません。デプロイする前に、1つのファイルに連結して戻します。

42
Piotr Zurek

各ファイルの開始時:

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

ファイル1:

myNamespace.foo = function()...

ファイル2:

myNamespace.bar = function()...
45
generalhenry
// File1:
// top level namespace here:
var myNamespace = myNamespace || {};

// File2:
myNamespace.foo = function() {
    // some code here...
}
14
Mark

各ファイルで、次のパターンに従います。

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

このように、ロードの順序は重要ではありません。

9
coderPatros

次のような個別のファイルで簡単に定義します。

ファイル1:

var myNamspace = {};

ファイル2:

myNamespace.foo = function()...

ファイル3:

myNamespace.boo = function()...

ファイルを正しい順序でロードするようにしてください。

3
Robin W.
(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);
1
eavichay