Question

Je suis intéressé à utiliser le modèle du module pour mieux organiser mes projets futurs. Malheureusement, il n'y a que quelques brefs tutoriels et une preuve de concept exemples du modèle du module.

Utilisation du motif de module, je voudrais organiser des projets dans ce type de structure:

project.arm.object.method();

Où « projet » est mon nom global du projet, « bras » est une sous-section ou branche du projet, « objet » est un objet individuel, et ainsi de suite aux méthodes et propriétés.

Cependant, je ne sais pas comment je devrais déclarer et organiser plusieurs « bras » et « objets » sous « projet ».

var project = window.project || {};
project.arm = project.arm || {};

project.arm.object = (function() {

    var privateVar = "Private contents.";

    function privateMethod() {
        alert(privateVar);
    }

    return {
        method: privateMethod
    };

}());

Y a-t-il des meilleures pratiques ou conventions lors de la définition d'une structure de module complexe? Dois-je déclarer juste un nouveau bras / objet sous le dernier?

Était-ce utile?

La solution

Voici une bonne écriture sur ce que vous êtes après; http://www.adequatelygood.com/2010/3/JavaScript -module-modèle en profondeur

Autres conseils

Dojo dojo.declare est idéal pour ce genre de chose car il

  

Créer un constructeur en utilisant une notation compacte pour l'héritage et l'extension prototype.

Il est aussi très pratique si même pour tout enlever ce genre de plaque de la chaudière:

var project = window.project || {};
project.arm = project.arm || {};

Si vous voulez juste cette fonctionnalité, alors vous pouvez utiliser dojo.setObject , mais bien sûr, écrire quelque chose à faire la même chose est trivial.

dojo.setObject("project.arm.object" (function() {
    var privateVar = "Private contents.";

    function privateMethod() {
        alert(privateVar);
    }

    return {
        method: privateMethod
    };
}()));

J'ai récemment utilisé dojo.declare / dojo.setObject pour un grand projet JavaScript (86 fichiers, 7K + lignes (sans compter les commentaires et les lignes vides)), et il était un jeu d'enfant pour garder tout organisé et facile à gérer, surtout quand vous avez un mécanisme d'inclusion comme dojo.require et dojo.provide .

Il y a beaucoup de nuances à la façon dont les gens préfèrent le faire, mais le principal avantage de ce que vous appelez le motif de module (un champ nommé), est que vous n'êtes pas encombrer l'espace de noms global, ce qui aide à garder les choses propre si vous apportez dans d'autres bibliothèques, etc., et évite les collisions de noms.

Comment vous organisez les noms et les champs imbriqués dans c'est en grande partie une question de préférence personnelle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top