2009-03-02 13 views
47

según las recomendaciones 'Javascript no intrusivo' Quiero separar mi lógica JavaScript en
archivos separados. Sin embargo, no sé cómo organizarlos.archivo JavaScript por visión en Rails

¿Debo:

  1. Acaba de lanzar todas las aplicaciones JavaScript en application.js archivo y cargarlo con diseño de la página? Este es un enfoque simple, pero terminaré con un hinchado Application.js. Es posible que algunos usuarios deseen visitar solo un par de páginas, pero este archivo completo se precargará, lo que no es bueno.
  2. o debería crear un archivo JavaScript independiente para cada vista y cargarlos de forma independiente? Esto crea un conjunto de preguntas. ¿Cómo vincular cada archivo js a la vista correspondiente?
    Gracias.

Respuesta

103

carga el código JavaScript principal de application.js cada vez. Ahora crea archivos para diferentes necesidades. Cree un archivo form.js, un archivo myfancypart.js, etc. No los cargue en el diseño application.html.erb. Cargar de forma dinámica cuando se los necesita:

application.html.erb:

<%= javascript_include_tag "application" %> 
<%= yield :javascript_includes %> 

parte superior de su view.html.erb:

<% content_for :javascript_includes do %> 
    <%= javascript_include_tag "forms.js" %> 
<% end %> 

Todo en el bloque content_for se cargará en rendimiento: javascript_includes.

+9

Esto está bien para el desarrollo, pero en la producción que desea el menor número de peticiones HTTP como sea posible. Cargar todas sus js por adelantado en una solicitud que se almacenará en caché podría conducir a un mejor rendimiento. – jonnii

+2

rails3 corrige problemas con la canalización de activos para la producción. –

+2

Entonces, ¿la respuesta seleccionada aquí es compatible con este modelo de canal de activos de Rails 3? – MattSlay

12

Sugiero poner todo en un solo archivo, que luego puede minify y gzip. El cliente solo tendrá que descargarlo una vez, ya que se almacenará en caché en todas las solicitudes posteriores.

Otra cosa que podría interesarle es piñones, un administrador de la dependencia Javascript, que se puede instalar utilizando joya. Puede obtener más información sobre los piñones desde el sitio web (http://getsprockets.org/) o desde la página de github (http://wiki.github.com/sstephenson/sprockets). Hace que escribir grandes aplicaciones de JavaScript sea mucho más manejable.

+0

esto cambia con el 3,1 –

2

Uno puede utilizar Jammit para incluir archivos CSS y javascripts

para el detalle: http://documentcloud.github.com/jammit/

Uso:

paso 1:

Añadir js-archivos en assets.yml (véase el código de abajo)

javascript:

footer: 

- app/javascripts/lib/*.js 
- app/javascripts/jquery-plugins/*.js 
- app/javascripts/custom/*.js 
- app/javascripts/application.js 

cabecera:

- app/javascripts/core/*.js 
- app/javascripts/head/*.js 

paso 2:

Añadir un código simple en diseño de la aplicación:

<%= include_javascripts :header %> 
<%= include_javascripts :footer %> 
5

Esto cambia con Rails 3.1 y la tubería de activos !!!

Los archivos separados son los mejores como usted indica. Las cuestiones sobre cómo hacer referencia a todas ellas y vincularlas desaparecen con rails 3.1 que tiene como objetivo compilarlas todas en archivos únicos para producción.

-1

tal vez usted desea utilizar application_helper

def javascript(*files) 
    content_for(:head) { javascript_include_tag(*files) } 
end 

def stylesheet(*files) 
    content_for(:head) { stylesheet_link_tag(*files) } 
end 
Cuestiones relacionadas