2012-09-28 8 views

Respuesta

8

También precompilada application.js (según la canalización de activos) está activa y automáticamente por defecto. El razonamiento es que incluso si el js se carga antes que el resto de la página, como el js siempre es el mismo, se cargará desde el caché desde la segunda solicitud en adelante, por lo que no hay razón real para publicarlo en la parte inferior del cuerpo más.

+0

gracias, eso es suficiente para mí :) – stephenmurdoch

+0

almacena en caché el archivo, pero todavía tienen que esperar para que cargue js (si se carga toda la página), ¿no? ¿No sería un atributo 'async' proporcionar los beneficios de agregar al fondo sin ser recargado por Turbolinks? – michelpm

+0

Con los recursos basados ​​en piñones de rieles normales, tendrá un js comprimido y minificado que generalmente se almacena en el caché del navegador. El tiempo de carga (como en "cargar el código") es de todos modos una fracción de la descarga total + espera + tiempo de carga para js. En cualquier caso, TL simplemente carga toda la página en segundo plano, luego toma los elementos (título, cuerpo, etc.) y los intercambia en su página en lugar de los actuales. Es un comportamiento simple, que puede o no dar como resultado una mayor velocidad. En ejemplos del mundo real, descubrí que los piñones compilaban javascript en head más que suficiente. – rewritten

5

Si está utilizando Turbolinks 5, ahora puede colocar turbolinks en la parte inferior de su cuerpo (y seguir las mejores prácticas de desarrollo web para renderizar una página). Esto también ayuda con el SEO muy ligeramente. Basta con añadir las secuencias de comandos en la parte inferior de su cuerpo y añadir

data-turbolinks-eval="false"

a su etiqueta de script. Esto evitará que turbolinks evalúe después de la carga de la página inicial. Así es como se hace con la javascript_include_tag:

<%= javascript_include_tag 'application', 'data-turbolinks-eval' => 'false'%>

Entonces sólo tiene que utilizar

$(document).on('turbolinks:load', function() { // code to be executed when use changes pages });

Cuestiones relacionadas