2011-07-13 8 views
7

Estoy experimentando con Modernizer.load.¿Puede Modernizr cargar scripts de manera asíncrona pero ejecutarlos en orden?

tengo unas pocas cosas:

Modernizr.load([ 
     { 
     load : ['/js/jquery-1.6.1.js', '/js/jquery.tools.min.js', '/js/myscript.js'] 
     } 
     ]); 

Si he entendido bien, puedo usar un código como este para cargar scripts de forma asincrónica. Sin embargo, ¿puedo entonces ejecutarlos en orden? ¿Qué pasa si myscript.js requiere que el objeto jquery se cargue primero?

En el ejemplo de la documentación de modernizr, load ([]) puede tomar una propiedad 'completa', cuyo parámetro puede ser una función que puede cargar otro script cuando todo lo demás está hecho. Sin embargo, si uso una función aquí para cargar mi script post-dependencia, entonces se carga en serie. Los documentos dicen específicamente que esto puede dañar el rendimiento.

Sin embargo, si cargo todo de manera asíncrona, no tengo ninguna idea sobre el orden en que se ejecutan. Y, por supuesto, necesito que mis dependencias corran primero.

Respuesta

12

Si utiliza Modernizr.load, todos los archivos que incluya a través de la lista incrustado/troceo podrán cargado de forma asíncrona, pero van a ser ejecutados cada en el orden en que se pone en.

Así , tu ejemplo cargar los archivos de forma asíncrona, pero ejecutarlos en este orden:

1: /js/jquery-1.6.1.js 
2: /js/jquery.tools.min.js 
3: /js/myscript.js` 

se puede simplificar el ejemplo, dicho sea de paso:

Modernizr.load(['/js/jquery-1.6.1.js', '/js/jquery.tools.min.js', '/js/myscript.js']); 

Para obtener más información, consulte Modernizr.load() tutorial en la Documentación, o consulte Yepnopejs.com (que es lo que Modernizr.load() básicamente es, en este momento).

Cuestiones relacionadas