2011-01-13 9 views
5

Da quando ho imparato come scrivere i miei plugin in jQuery, trovo che sono tentato di approcciare il mio javascript in questo modo ogni volta che sto costruendo una pagina con una complessità qualsiasi. Ovviamente è sciocco quando si parla di circa 10 righe di codice, ma quando ho intenzione di essere la costruzione di una pagina con un paio di centinaia di righe di JavaScript (o più), sembra che il modo più semplice per:È sbagliato che io sia tentato di strutturare molto del mio codice jQuery come plugin?

  • passare i dati (o anche solo opzioni) dal mio script PHP in javascript - $("#myform").myPagePlugin({options}, {data});
  • mi dà un oggetto "master" nel DOM per attaccare i miei dati, invece di qualcosa hacky come le variabili globali
  • fare il mio codice di re -uso tardi
  • "Plug in" il mio javascript alla pagina in un modo familiare

Sto scavando me stesso in un buco se comincio a fare questo? C'è qualcosa che mi manca?

risposta

5

La mia unica critica sarebbe che stai creando un plug-in jQuery, sembra che tu non abbia mai veramente intenzione di usarlo di nuovo. Ciò aggiunge l'overhead dell'esecuzione del JavaScript che jQuery esegue per inizializzare un plug-in quando tale overhead non ne vale la pena, dal momento che il modulo non verrà mai più utilizzato.

Invece di un plug-in jQuery, perché non si crea un oggetto JavaScipt che è un namespace? Ad esempio:

var mypage = {}; 
mypage.controller = function(){ 

} //your preferred JavaScript object notation here. 

Oppure questo namespace si avvicina a ciò che si definisce "hacky"? Se è così, sarei rispettosamente in disaccordo.

+0

Interessante. Quindi basta creare un oggetto vuoto e quindi attaccarlo ad esso? Sicuramente non penso che sia hacky. – keithjgrant

+0

sì, l'uso degli hash in JS è incredibilmente conveniente. –

+0

Un piccolo follow-up. Ho trovato un ottimo articolo sul "Modello di modulo" per javascript. Sembra molto utile: http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth. Risultato simile al metodo precedente, ma aggiunge anche la possibilità di gestire proprietà private/pubbliche. – keithjgrant

1

L'unico problema con gli hash per Zalavsky è che, mentre un hash crea uno spazio dei nomi molto garbo, che non crea un ambito. Spesso sono necessarie variabili statiche a livello di modulo che sono non disponibili per il mondo esterno. In questi casi, vorrei scrivere

var mypage = function() { 
    var some_module_static ; 
    return { 
    controller :function(){ 
     // use some_module_static here 
    } 
    }; 
}(); 

Ogni volta che non avete bisogno di un ambito separato, sì, utilizzare l'hash.

Scrivere un plug-in ogni volta che si sta scrivendo un modulo che è concettualmente utile al di là di ciò che si sta facendo al momento.

+0

Buon punto sull'hash. –

Problemi correlati