En caso de código Jquery ir en encabezado o pie de página?


¿Cuál es el mejor lugar para poner código Jquery (o archivo Jquery separado)? ¿Las páginas se cargarán más rápido si las pongo en el pie de página?

Author: Simone, 2010-01-21

9 answers

Todos los scripts deben cargarse al final

En casi todos los casos, es mejor colocar todas las referencias del script al final de la página, justo antes de </body>.

Si no puede hacerlo debido a problemas de plantillas y demás, decore sus etiquetas de script con el atributo defer para que el navegador sepa descargar sus scripts después de que se haya descargado el HTML:

<script src="my.js" type="text/javascript" defer="defer"></script>

Casos extremos

Hay algunos casos extremos, sin embargo, donde usted puede experimenta parpadeo de página u otros artefactos durante la carga de la página que generalmente se pueden resolver simplemente colocando las referencias de script de jQuery en la etiqueta <head> sin el atributo defer. Estos casos incluyen jQuery UI y otros complementos como jCarousel o Treeview que modifican el DOM como parte de su funcionalidad.


Otras advertencias

Hay algunas bibliotecas que deben cargarse antes del DOM o CSS, como polyfills. Modernizr es una de esas bibliotecas que debe colocarse en la etiqueta de cabeza.

 169
Author: Chad Levy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:02:21

Poner Scripts en la parte inferior

El problema causado por los scripts es que bloquean las descargas paralelas. El La especificación HTTP/1.1 sugiere que navegadores descargar no más de dos componentes en paralelo por nombre de host. Si sirve sus imágenes desde múltiples hostnames, puede obtener más de dos las descargas se producen en paralelo. Mientras un script está descargando, sin embargo, el el navegador no iniciará ningún otro descargas, incluso en diferentes nombres de host. En algunas situaciones no es fácil de mover scripts a la parte inferior. Si, por ejemplo, el script utiliza documento.escribir para insertar parte de la contenido de la página, no se puede mover más abajo en la página. También podría haber cuestiones de alcance. En muchos casos, no son formas de solucionar estos situación.

Una sugerencia alternativa que a menudo surge es usar scripts diferidos. El atributo DIFERIR indica que el el script no contiene documento.escribir, y es una pista para navegadores que pueden continuar representación. Desafortunadamente, Firefox no admite el atributo DIFERIR. En Internet Explorer, el script puede ser diferido, pero no tanto como deseable. Si un script puede ser diferido, también se puede mover a la parte inferior de pagina. Eso hará que tu web las páginas se cargan más rápido.

EDITAR: Firefox soporta el atributo DEFER desde la versión 3.6.

Fuentes:

 218
Author: 3zzy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-18 05:57:57

Solo carga jQuery en la cabeza, a través de CDN, por supuesto.

¿Por qué? En algunos escenarios puede incluir una plantilla parcial (por ejemplo, fragmento de formulario de inicio de sesión ajax) con código dependiente de jQuery incrustado; si jQuery se carga en la parte inferior de la página, se obtiene un error "$ no está definido", bueno.

Hay formas de solucionar esto, por supuesto (como no incrustar ningún JS y agregarlo a un paquete js de carga en la parte inferior), pero ¿por qué perder la libertad de js cargado perezosamente, de poder colocar jQuery dependiente code anywhere you please ? Al motor Javascript no le importa dónde vive el código en el DOM siempre y cuando las dependencias (como jQuery que se cargan) estén satisfechas.

Para sus archivos js comunes/compartidos, sí, colóquelos antes de </body>, pero para las excepciones, donde realmente tiene sentido para el mantenimiento de la aplicación pegar un fragmento dependiente de jQuery o una referencia de archivo allí en ese punto en el html, hágalo.

No hay un golpe de rendimiento cargando jquery en la cabeza; qué navegador en el planeta no tiene ya el archivo CDN jQuery en caché?

Mucho ruido y pocas nueces, mete jQuery en la cabeza y deja que tu libertad js reine.

 27
Author: virtualeyes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-13 09:35:30

Nimbuz proporciona una muy buena explicación del problema involucrado, pero creo que la respuesta final depende de su página: ¿qué es más importante para el usuario tener antes: scripts o imágenes?

Hay algunas páginas que no tienen sentido sin las imágenes, pero solo tienen scripting menor, no esencial. En ese caso, tiene sentido poner scripts en la parte inferior, para que el usuario pueda ver las imágenes antes y comenzar a darle sentido a la página. Otras páginas dependen de scripting para funcionar. En en ese caso, es mejor tener una página de trabajo sin imágenes que una página que no funciona con imágenes, por lo que tiene sentido poner scripts en la parte superior.

Otra cosa a considerar es que los scripts son típicamente más pequeños que las imágenes. Por supuesto, esta es una generalización y tienes que ver si se aplica a tu página. Si lo hace entonces, para mí, es un argumento para ponerlos primero como regla general (es decir. a menos que haya una buena razón para hacer lo contrario), porque no retrasarán tanto las imágenes como imágenes retrasaría los scripts. Finalmente, es mucho más fácil tener script en la parte superior, porque no tienes que preocuparte de si están cargados todavía cuando necesitas usarlos.

En resumen, tiendo a poner los scripts en la parte superior de forma predeterminada y solo considero si vale la pena moverlos a la parte inferior después de que la página se complete. Es una optimización - y no quiero hacerlo prematuramente.

 13
Author: EMP,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-21 03:10:20

La mayoría del código jquery se ejecuta en document ready, lo que no sucede hasta el final de la página de todos modos. Además, el procesamiento de páginas puede retrasarse por el análisis/ejecución de javascript, por lo que es una práctica recomendada poner todo javascript en la parte inferior de la página.

 6
Author: Stefan Kendall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-20 22:01:53

La práctica estándar es poner todos sus scripts en la parte inferior de la página, pero yo uso ASP.NET MVC con una serie de plugins jQuery, y me parece que todo funciona mejor si pongo mis scripts jQuery en la sección <head> de la página maestra.

En mi caso, hay artefactos que ocurren cuando se carga la página, si los scripts están en la parte inferior de la página. Estoy usando el plugin jQuery TreeView, y si los scripts no se cargan al principio, el árbol se renderizará sin el clases CSS necesarias impuestas por el plugin. Así que obtienes este desorden de aspecto divertido cuando la página se carga por primera vez, seguido por la representación adecuada de la vista del árbol. Muy mal aspecto. Poner los plugins de jQuery en la sección <head> de la página maestra elimina este problema.

 4
Author: Robert Harvey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-21 02:56:10

Aunque casi todos los sitios web todavía colocan Jquery y otros javascript en el encabezado: D, incluso verifique stackoverflow.com .

También le sugiero que se ponga antes de la etiqueta final del cuerpo. Puede verificar el tiempo de carga después de colocarlo en cualquiera de los lugares. La etiqueta de script pausará tu página web para que se cargue más.

Y después de colocar javascript en el pie de página, puede obtener un aspecto inusual de su página web hasta que cargue javascript, así que coloque css en su sección de encabezado.

 3
Author: Mujah Maskey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-12 06:43:25

Justo antes de </body> es el mejor lugar según este enlace, tiene sentido.

Lo mejor que puedes hacer es probar por ti mismo.

 1
Author: Soufiane Hassou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-20 22:02:25

Para mí jQuery es un poco especial. Tal vez una excepción a la norma. Hay muchos otros scripts que dependen de él, por lo que es muy importante que se cargue temprano para que los otros scripts que vengan más tarde funcionen como se pretendía. Como alguien más señaló incluso esta página carga jQuery en la sección de cabeza.

 0
Author: user3094826,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-20 13:57:10