2009-06-09 12 views
6

Sto lavorando a un progetto in cui stiamo facendo un sacco di javascript personalizzati e in particolare jQuery, su un progetto in stile mvc.Qual è un buon modo per ridefinire un numero crescente di funzioni javascript/jquery?

L'unico problema è che continuo ad aggiungere sempre più funzioni/variabili globali e stanno accumulando. Ho alcuni file ma non sono sicuro di come suddividere alcune delle cose in file separati.

Ho pensato di comporre alcune di queste funzioni e variabili globali in oggetti, ma la sintassi dell'oggetto in javascript mi ​​sembra un po 'imbarazzante (a causa dell'assenza di classi classiche). Sebbene se avessi un buon esempio da seguire forse potrei venire in giro.

Come gestite un progetto in cui le funzioni e le variabili globali di JavaScript iniziano ad accumularsi in questo modo?

+0

Non credo che la sintassi degli oggetti di JavaScript possa essere ragionevolmente descritta come un hack. Se mai, è la parte più elegante della lingua. Se intendi provare a scrivere le lezioni in classe è doloroso, non potrei essere più d'accordo con te. È un linguaggio orientato agli oggetti, non un linguaggio basato sulla classe. – Nosredna

risposta

11

Un modo molto semplice per Pile un gruppo di variabili e funzioni globali in un unico oggetto globale:

// Awful pile of globally-scoped names 
var foo = 1 
var bar = 2 
function go = function(){ 
    console.log('Yeehaw!'); 
} 


// Instead, just dump everything into a global-level object 
var MyApp = { 
    foo: 1, 
    bar: 2, 
    go: function(){ 
     console.log('Yeehaw!'); 
    } 
} 

// Now access stuff like this 
console.log(MyApp.foo); 
console.log(MyApp.bar); 
MyApp.go(); 

Per le variabili "semplice" di primo livello e le funzioni, posso consigliare questo. Ci sono molti miglioramenti che possono essere apportati a questo, ma probabilmente rientreranno nella categoria delle ottimizzazioni premature; questo è un ottimo primo passo.

+0

Soluzione molto pulita. Userò questo approccio nel mio javascript. +1 – ichiban

+0

Questo è quello che faccio pure io. –

+0

Sì. E i metodi MyApp avranno accesso a tutto il resto in MyApp attraverso "questo".Qualsiasi cosa al di fuori di MyApp utilizzerà il prefisso MyApp al posto di questo. Si applica a qualsiasi cosa innescata da un evento o un timer. – Nosredna

1

Li potrebbe rompere in modo simile a quello che fa ... jquery.ui per categorie o per azione/controllo

es:

effects.blind.js
effects.bounce.js
ui.accordion.js

Possono essere suddivisi nei controlli di cui si occupano?

O da quello che fanno?

solo alcuni suggerimenti ...

+0

Grazie per i suggerimenti. –

2

I video Crockford su YUI teatro sono un buon esempio di come impostare i namespace JavaScript tra le altre cose.

+0

Alcuni buoni video, grazie! –

Problemi correlati