2011-08-25 12 views
20

Sto cercando di implementare il backbone in un grande progetto web con più "app" che lo useranno e sto cercando di trovare un buon modo per organizzare i miei file. I due mi è venuta in mente finora sono:Come organizzi i tuoi file Backbone?

js 
+- models 
| +- search 
| | +- result.js 
| | +- ... 
| +- cart 
| | +- item.js 
| | +- ... 
| ... 
+- collections 
| +- search 
| | +- results.js 
| | +- ... 
| +- cart 
| | +- items.js 
| | +- ... 
| ... 
+- views 
| +- search 
| | +- resultRow.js 
| | +- ... 
| +- cart 
| | +- itemRow.js 
| | +- ... 
| ... 
+- routers 
| +- search 
| +- cart 
| ... 

E

js 
+- search 
| +- models 
| | +- result.js 
| | +- ... 
| ... 
| +- collections 
| | +- results.js 
| | +- ... 
| ... 
| +- views 
| | +- resultRow.js 
| | +- ... 
+- cart 
| +- models 
| | +- item.js 
| | +- ... 
| ... 
| +- collections 
| | +- items.js 
| | +- ... 
| ... 
| +- views 
| | +- itemRow.js 
| | +- ... 
+- routers 
| +- search 
| +- cart 
| ... 

sto appoggiato verso il secondo come ha linee più chiare tra le sezioni del sito e mantiene le applicazioni insieme, ma la nostra attuale struttura del back-end framework è molto più simile alla precedente.

+0

Metti i modelli e le raccolte in una cartella, chiamali result.js e result_collection.js. – Vojto

risposta

21

vorrei andare con una versione modificata del secondo ... in pratica, rilasciare le cartelle per m, v e c in ciascuna delle sezioni del sito. non c'è davvero bisogno di separarli in sottocartelle quando i nomi dei file e i nomi delle classi rifletteranno già quello che sono.

js 
+- search 
| +- result.js 
| +- results.js 
| +- resultRow.js 
| +- ... 
+- cart 
| +- item.js 
| +- items.js 
| +- itemRow.js 
| +- ... 
+- routers 
| +- search 
| +- cart 
| ... 

guardando questo layout, non so ancora che "voce" è un modello, "voci" è una collezione e "itemRow" è una visione, perché questa è la convenzione che è stata impostata. aggiungendo il livello aggiuntivo di nomi di cartelle aggiunge solo complessità e non aggiunge alcun valore, secondo me.

anche - (probabilmente lo sai, ma nel caso in cui altri leggendo questo post non ...) assicurati di usare qualcosa come require.js per consolidare/ridimensionare tutti i tuoi js in un singolo file prima di distribuirli a i tuoi ambienti di produzione. mantenere il codice organizzato in questo modo è ottimo per scopi di sviluppo e di debug. ma quando arriva il momento per un sistema di produzione di utilizzare il codice, averlo diviso in più file provoca notevoli ritardi per l'utente finale. require.js risolve questo problema fornendo un modo semplice per avere sia i file organizzati durante il lavoro di sviluppo, sia un singolo file miniato per la produzione.

+1

Sì, usiamo un bundler lato server personalizzato che utilizza le regole .htaccess per passare tutte le richieste di file js attraverso di esso, che raggruppa i file insieme e le loro dipendenze decidono quindi se ridurre a seconda dell'ambiente. È memorizzato nella cache lato server e lato client fino a quando un nuovo push genera una nuova chiave cache (su questa chiave cache è sovrascritta per essere l'ora corrente). – JaredMcAteer

+0

Quali altre alternative per richiedere js mi consigliate? solo per il riempimento di tutti i file in un singolo file (opzionalmente minimizzato) – Samson

+0

Io uso Grunt.js per questo. È meraviglioso. :) http://gruntjs.com –

Problemi correlati