43 votes

Fractionnement d'un espace de noms JavaScript en plusieurs fichiers

Disons que j'ai un espace de nom comme ça :

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

Quelle est la meilleure façon de diviser ce code en fichiers définissant foo y bar séparément ?

Je ne m'inquiète pas du temps de chargement - je les concaténerai en un seul fichier avant le déploiement.

4 votes

Votez pour une excellente question ! J'ai appris quelque chose de bon.

0 votes

Également mentionné à : stackoverflow.com/a/4130511/895245

46voto

generalhenry Points 9763

Au début de chaque fichier :

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

Dossier 1 :

myNamespace.foo = function()...

Dossier 2 :

myNamespace.bar = function()...

14voto

Mark Points 653
// File1:
// top level namespace here:
var myNamespace = myNamespace || {};

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

8voto

coderPatros Points 309

Dans chaque fichier, suivez ce modèle :

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

De cette façon, l'ordre des charges n'a pas d'importance.

3voto

Robin W. Points 211

Il suffit de les définir dans des fichiers séparés comme ceci :

Dossier 1 :

var myNamspace = {};

Dossier 2 :

myNamespace.foo = function()...

Dossier 3 :

myNamespace.boo = function()...

Assurez-vous simplement que vous chargez les fichiers dans le bon ordre.

1voto

eavichay Points 422
(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);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X