2010-04-27 13 views
18

Sono interessato all'utilizzo del modello di modulo per organizzare meglio i miei progetti futuri. Sfortunatamente, ci sono solo alcuni brevi tutorial ed esempi di proof-of-concept del Pattern Module.Utilizzo del modello di modulo per progetti di dimensioni maggiori

Utilizzando il modello di modulo, vorrei organizzare progetti in questo tipo di struttura:

project.arm.object.method(); 

Dove "progetto" è il mio nome progetto globale, "braccio" è una sottosezione o ramo della progetto, "oggetto" è un oggetto individuale, e così via per i metodi e le proprietà.

Tuttavia, non sono sicuro di come dovrei dichiarare e organizzare più "armi" e "oggetti" in "progetto".

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

project.arm.object = (function() { 

    var privateVar = "Private contents."; 

    function privateMethod() { 
     alert(privateVar); 
    } 

    return { 
     method: privateMethod 
    }; 

}()); 

Esistono buone pratiche o convenzioni quando si definisce una struttura di modulo complessa? Dovrei semplicemente dichiarare un nuovo braccio/oggetto sotto l'ultimo?

risposta

2

Ci sono molte sfumature su come le persone preferiscono farlo, ma il vantaggio principale di ciò che si chiama il modello di modulo (un campo di applicazione), è che non si confonde con lo spazio dei nomi globale, il che aiuta mantieni le cose pulite se porti dentro altre librerie, ecc. ed evita conflitti di nome.

Come si organizzano i nomi e gli ambiti nidificati all'interno di questo è in gran parte una questione di preferenze personali.

3

Dojo di dojo.declare è grande per questo genere di cose, poiché

Creare un costruttore con una notazione compatta per l'eredità e l'estensione del prototipo.

E 'anche molto conveniente se anche solo per la rimozione di questo tipo di targa della caldaia:

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

Se si desidera solo questa caratteristica, allora si potrebbe utilizzare dojo.setObject, ma, naturalmente, scrivere qualcosa per fare il lo stesso è banale.

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

    function privateMethod() { 
     alert(privateVar); 
    } 

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

di recente ho usato dojo.declare/dojo.setObject per un grande progetto di JavaScript (86 file, 7K + linee (senza contare i commenti e le righe vuote)), ed è stato un gioco da ragazzi per tenere tutto organizzato e gestibile, soprattutto quando si ha un meccanismo di inclusione come dojo.require e dojo.provide.

Problemi correlati