Pregunta rails mejores prácticas donde colocar javascript discreto


mis aplicaciones de rieles (todos 2.3.5) usan una combinación total de javascript, rjs, prototype y jquery en línea. Llamémoslo aprendizaje o dolores de crecimiento. Últimamente he estado cada vez más encaprichado con javascript discreto. Hace que tu html esté limpio, de la misma manera que css lo limpió.

Pero la mayoría de los ejemplos que he visto son pequeños ejemplos, y ponen todo javascript (jquery) dentro de application.js

Ahora tengo una aplicación bastante grande, y estoy pensando maneras de estructurar mi js. Me gusta de alguna manera que mi guión todavía esté cerca de la vista, así que estoy pensando algo así como

orders.html.erb
orders.js

donde orders.js contiene el javascript discreto específico de esa vista. Pero tal vez sea solo que soy demasiado conservador :)

He leído algunos mensajes de Yehuda Katz sobre este mismo problema aquí y aquídonde aborda este problema Pasará por sus archivos js y solo cargará aquellos relevantes para su vista. Pero, por desgracia, no puedo encontrar una implementación actual.

Entonces mis preguntas:

  • ¿cómo es mejor estructurar su javascript discreto? administre su código, ¿cómo se asegura de que sea obvio desde el html qué se supone que debe hacer algo? Creo que los buenos nombres de clase van un largo camino :)
  • ¿cómo arreglas tus archivos, los cargas todos adentro? ¿sólo algunos? lo usas content_for :script o javascript_include_tag en su opinión para cargar los scripts relevantes. O ...?
  • ¿Escribes funciones muy genéricas (como una eliminación), con parámetros (¿añades atributos adicionales?), o escribes funciones muy específicas (¿SECO?). Sé que en Rails 3 hay un conjunto estándar, y todo es discreto allí. ¿Pero cómo comenzar en Rails 2.3.5?

En resumen: ¿cuáles son las mejores prácticas para hacer javascript discreto en los rieles? :)


30
2018-05-23 11:31


origen


Respuestas:


No creo que haya una mejor práctica, pero les haré saber lo que hago.

  1. Tengo una serie de archivos js cada uno para su propio propósito en el public/javascripts/ directorio. Algunos ejemplos podrían ser utility.js  chat.js  shopping_basket.js y así.

  2. yo suelo empaquetador de activos y definir una gran colección de grasa para todas mis funciones de uso general y otra para la funcionalidad solo de administrador. Los viajes redondos al servidor cuestan demasiado. Básicamente, incluyo todos los js en la carga de la primera página minimizados en una burbuja (en general)

  3. Permito básico $(document).ready se engancha en línea en las páginas y las mantiene realmente cortas.

  4. Los datos a los que deben acceder mis archivos js se representan en línea con la página. (Usualmente en el DOM, a veces como vars - Eg. var xyz = 100)

  5. Por lo general, desarrollaré mis controladores con javascript desactivado (y me aseguraré de que todo funcione), luego lo enciendo y rocío algunos if request.xhr? donde sea necesario


Tenga en cuenta que Rail 3.1 introduce una mejor práctica incorporada, consulte: http://guides.rubyonrails.org/asset_pipeline.html - en una nota personal, he tenido problemas de rendimiento y configuración con la nueva cartera, sin embargo, muchos otros han tenido un gran éxito con ella.


10
2018-05-23 13:29



Recientemente documenté cómo he sido gestionar javascript en Ruby on Rails. Básicamente descompongo las cosas en muchos archivos pequeños y granulares, cada uno con un espacio de nombres apropiado y luego los combino en un único archivo para la producción usando asset_packager.


3
2018-05-29 13:16



Encontré esta publicación al intentar resolver el mismo problema, pero ninguna de las soluciones existentes me pareció la correcta. Escribí mi enfoque aquí. Me encanta la convención de Rails sobre la configuración, por lo que quería el mismo enfoque para incluir JavaScript que se apliquen solo a una página de acción en particular. Si nada más, es al menos otro enfoque para agregar a sus opciones.


1
2017-10-18 14:24