javascript - w3s - title html
Rails 3: ¿una buena regla general para colocar javascript? (1)
Como no he visto una respuesta en aproximadamente un mes, responderé a esta pregunta lo mejor que sé.
Rails 3.1 (actualmente en la versión candidata 4) introduce sprockets , que compilarán todos los javascript en un proyecto de rails en un solo archivo. Incluso viene con herramientas para minimizar y comprimir javascript para que todo se entregue al cliente a la vez.
Relacionado con las ruedas dentadas está el oleoducto de activos de Rails 3.1. Como entiendo, es una jerarquía de carpetas / abstracción. Javascripts puede ir en 3 carpetas:
/apps/assets/javscripts/
Archivos de Javascript específicos de la aplicación, incluido application.js
. Esto solo debe contener el manifiesto de los archivos javascript que desea incluir en su proyecto. La rails new
herramienta rails new
generará este archivo e incluirá jQuery en el manifiesto.
/lib/assets/javascripts/
Archivos de Javascript escritos por el desarrollador que son de propósito más general. (Mi impresión es que esto sería para las bibliotecas javascript que desarrolle para que se coloquen en múltiples aplicaciones)
/vendor/assets/javascripts/
Archivos javascript de terceros (es decir, JQuery, Modernizr)
Todos los archivos en estas carpetas aparecerán al cliente dentro de /assets/
, extrayendo las rutas del archivo del lado del servidor. Supongo que esto está destinado a ayudar al desarrollador a organizar archivos javascript.
Para responder mi propia pregunta
- Coloque las funciones de javascript en archivos separados, agrúpelos lógicamente. Mi aplicación de prueba indicó que las subcarpetas dentro de
.../assets/javascripts/
están bien si y solo si la ruta de la subcarpeta está incluida en el manifiesto.- IE poniendo
//= subfolder/js_file
en el manifiesto funcionará. Poner//= js_file
no lo hará sijs_file
está dentro de.../javascripts/subfolder/
- DHH menciona una "regla de 13" en su discurso (vinculado a continuación). Si el número de javascripts en una carpeta excede de 13, comienza a verse desordenado e inmanejable. Este sería un buen momento para agrupar archivos javascript en subcarpetas.
- IE poniendo
- Use el compresor y el compresor Rails 3.1 (o instale una gema preferida)
- Refactoriza el código javascript de vez en cuando. Mueva las funciones a
/lib/assets/javascripts/
largo del tiempo. (El objetivo es reconocer finalmente cuándo desea escribir funciones de javascript de propósito general en lugar de funciones específicas de la aplicación y eliminar este paso de refactor)
Más recursos
una entrada de blog que cubre todos los cambios en Rails 3.1
La charla de DHH sobre Rails 3.1 cambia, 16 de mayo de 2011 (aproximadamente 1 hora)
Al escribir javascript para una página específica en un sitio, ¿cuándo desea convertir el javascript en una función e incluirlo en application.js
?
He visto sugerencias sobre cómo hacer esto (y minimizar o gzip) para minimizar las solicitudes HTTP. Eso tiene sentido, pero ¿qué pasa con la mantenibilidad? Si tengo un código js específico para una vista, parece que es más trabajo analizar una application.js
potencialmente masiva.js. Ese código podría incrustarse en esa vista o colocarse en su propio archivo .js
(o .js.erb
o .rjs
) en esa carpeta de vista.
He visto otra suggestion que Rails fusiona automáticamente todos los javascript en un archivo. ¿Es esto cierto?
TLDR: ¿cuánto o cuán poco debería preocuparse un desarrollador por la optimización al escribir javascript?