Ya hay varias respuestas, cada una de ellas funciona bien, pero todas dependen de asegurarse de que jQuery se descargue sincrónicamente antes de que las dependencias intenten usarlo. Este enfoque es muy seguro, pero también puede presentar una ineficiencia ya que no se pueden descargar/ejecutar otros recursos mientras se descarga y analiza la secuencia de comandos de la biblioteca jQuery. Si coloca jQuery en la cabeza con una etiqueta incrustada, el navegador de los usuarios estará inactivo mientras descarga y procesa jQuery cuando podría estar haciendo otras cosas como descargar imágenes, descargar otras secuencias de comandos, etc.
Si usted está buscando rapidez de respuesta en el arranque, cada milisegundo cuenta.
Una gran ayuda para mí durante el último año ha sido Steve Souders, primero cuando estaba en Yahoo, y ahora en Google. Si tiene tiempo, revise sus diapositivas para Even Faster Web Sites y High Performance Web Sites. Excelente. Para una gran paráfrasis, continúe aquí.
Cuando adjuntar archivos JavaScript al DOM, se ha encontrado que poner en línea < guión > etiqueta en la cabeza < > del documento hace que la mayoría de los navegadores para bloquear mientras que el archivo está siendo descargado y analizado. IE8 y Chrome son excepciones. Para evitar esto, puede crear un elemento "script" a través de document.createElement, establecer los atributos adecuados y luego adjuntarlo al encabezado del documento. Este enfoque no se bloquea en ningún navegador importante.
<script type='text/javascript'>
// Attaching jQuery the non-blocking way.
var elmScript = document.createElement('script');
elmScript .src = 'jQuery.js'; // change file to your jQuery library
elmScript .type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(elmScript);
</script>
Esto asegura que jQuery, mientras que la descarga y el análisis, no está bloqueando la descarga y análisis de cualquier otra imagen o JavaScript archivos. Pero esto podría presentar un problema si tiene un script que depende de que jQuery termine su descarga antes de que lo haga jQuery. jQuery no estará allí y obtendrá un error que dice $ o jQuery no está definido.
Por lo tanto, para asegurarse de que su código se ejecutará, debe hacer alguna comprobación de dependencia. Si sus dependencias no se cumplen, espere un momento y vuelva a intentarlo.
<script type='text/javascript'>
runScript();
function runScript() {
// Script that does something and depends on jQuery being there.
if(window.$) {
// do your action that depends on jQuery.
} else {
// wait 50 milliseconds and try again.
window.setTimeout(runScript, 50);
}
}
</script>
Como dije antes, no hay problemas con los enfoques que se muestran anteriormente, todos son válidos y todo funciona. Pero este método asegurará que no esté bloqueando la descarga de otros elementos en la página mientras espera jQuery.
Este enfoque funcionará para cualquier archivo, por lo que si tiene que incluir archivos de 10 js, puede adjuntar cada uno de ellos con este método. Solo tiene que asegurarse de que su función de verificación compruebe todas las dependencias antes de ejecutar.
Publique código de ejemplo –