2011-08-25 11 views
20

Estoy buscando implementar backbone en un gran proyecto web con varias "aplicaciones" que lo utilizarán y estoy tratando de encontrar una buena manera de organizar mis archivos. Los dos que he encontrado hasta el momento son:¿Cómo organizas tus archivos 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 
| ... 

Y

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

me estoy inclinando hacia este último, ya que tiene líneas más claras entre las secciones de la página web y mantiene las aplicaciones juntos, pero nuestra estructura actual del framework back-end es mucho más parecida a la anterior.

+0

Coloque modelos y colecciones en una sola carpeta, llámeles result.js y result_collection.js. – Vojto

Respuesta

21

iría con una versión modificada de la segunda ... básicamente, suelte las carpetas para m, v y c en cada una de las secciones de su sitio. realmente no hay necesidad de separarlos en subcarpetas cuando los nombres de los archivos y las clases ya reflejarán lo que son.

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

mirar esta disposición, todavía sé que "elemento" es un modelo, "elementos" es una colección y "itemRow" es un punto de vista, porque esa es la convención de que haya configurado. agregar la capa adicional de nombres de carpeta solo agrega complejidad y no agrega ningún valor, en mi opinión.

también - (probablemente sepa esto, pero en caso de que otros que lean esta publicación no ...) asegúrese de usar algo como require.js para consolidar/minificar todas sus js en un solo archivo antes de implementarlo en sus entornos de producción. mantener el código organizado de esta manera es ideal para fines de desarrollo y depuración. pero cuando llega el momento de que un sistema de producción use el código, dividirlo en múltiples archivos causa retrasos significativos para el usuario final. require.js resuelve este problema al proporcionar una forma fácil de tener ambos archivos organizados durante el trabajo de desarrollo y un único archivo modificado para la producción.

+1

Sí, utilizamos un paquete personalizado del lado del servidor que usa las reglas .htaccess para pasar todas las solicitudes de archivos js a través de él, que luego agrupa los archivos y sus dependencias, y luego decide si se debe minimizar dependiendo del entorno. Está en el lado del servidor y en el lado del servidor en caché hasta que una nueva inserción genere una nueva clave de caché (en dev se sobrescribe esta clave de caché para que sea la hora actual). – JaredMcAteer

+0

¿Qué otras alternativas para requerir js recomienda? solo para empaquetar todos los archivos en un solo archivo (opcionalmente modificado) – Samson

+0

Utilizo Grunt.js para esto. Es impresionante. :) http://gruntjs.com –