2010-11-04 11 views
5
  1. Je voudrais savoir quelle est la différence (avantages/inconvénients) entre les motifs suivants.
  2. Comment créer des sous-modules basés sur sur le motif de module?

Mon but est d'avoir mes js organisés en plusieurs fichiers qui sont chargés paresseux mais ont un espace de noms.JavaScript modèle Module/organisation/sous-modules

Par exemple:

SO.global (global.js) SO.global.registration (registration.js) < - charge

VS.

var SO = (function() { 

    var CONSTANT = 'Z'; 

    function createX(){ 
     alert("create X"); 
    } 

    function getY(){ 
     alert("get Y"); 
    } 

    return { 
     create:createX, 
     get:getY 
    } 

}()); 
+2

il n'y a pas de différence entre les deux exemples .... on a parens autour d'elle, mais ils sh ould faire la même chose. – rob

+0

Les parenthèses supplémentaires dans le deuxième exemple sont utilisées par certaines personnes pour indiquer que l'expression de la fonction est appelée immédiatement. –

+0

Je pense que les parens sont au mauvais endroit pour cette convention cependant. Je crois qu'il est généralement écrit comme (function() {...})() – Gopherkhan

Répondre

5

Avez-vous envisagé Require.JS? Il tente de fournir la solution suivante:

  • Une sorte de # include/importation/require
  • possibilité de charger les dépendances imbriquées
  • de facilité d'utilisation pour les développeurs mais soutenu par un outil d'optimisation qui permet le déploiement

Require.JS implémente la spécification définie par Module/Asynchronous Definition Common.JS

3

est ici une bonne lecture: http://snook.ca/archives/javascript/no-love-for-module-pattern, et un autre: http://lamb.cc/blog/category/javascript/

YUI utilise avec avidité, comme moi, je ne l'ai pas trouvé par lui des situations où je restreint, et il intègre bien avec le chargeur de dépendances YUI pour les modules personnalisés.

(Désolé, je sais que ce n'est pas une réponse complète, mais il y a quelques informations bidouillé pour vous)

+0

Ces liens viennent d'ajouter quelques mois sur mon pipeline "skills-todo". – cherouvim

+0

Le premier lien est bizarre. C'est comme s'il s'opposait à l'utilisation de variables privées. – david

+0

@cherouvim, d'accord, je suis sur ... 70% du chemin à travers le cerveau monstre impliqué (pour moi de toute façon) – danjah