Autoload de librerías JQuery al estilo PHP (__autoload)
Si sueles programar en PHP posiblemente conozcas __autoload, en caso de que no lo conozcos te explico un poco. Consiste en la carga (include) automática de archivos .php …
Es decir cuando creas un objeto en PHP debes hacer antes un include del archivo php que contiene esta clase, esto puede ser bastante engorroso si son 20 clases en 20 archivos diferentes, por lo que autoload nos solucionaría el problema de estar haciendo includes sin parar
,
En Javascript nos puede pasar exactamente lo mismo, podemos tener varias librerías javascript en diferentes archivos, por lo tanto tendras que añadir en el head el archivo .js de dicha librería para poder usarla… el tener muchos archivos en el head de la página ralentiza bastante su carga (más peticiones más tarda en cargar la web)
La solución sería simular una especie de __autoload, no es tan fácil como en PHP pero tampoco tiene mucha complicación…
Pondre un ejemplo de como lo he hecho, usando jQuery y una librería llamada fancybox
Si quisiera usar fancybox, primero deberia incluir el javascript de la libreria en el head y después usarla mediante $(‘#objeto’).fancybox();
Pero claro, igual la fancybox no la usamos en la portada, sino que solo la usamos en una sección en concreto, por lo tanto deberíamos controlar la carga del javascript dependiendo de la web donde estés, algo que puede ser muy engorroso pero con fácil solución con un pequeño script…
Os pongo acontinuación mi emulación de autoload
jQuery.fn.fancybox = function(data) {
var obj = $(this);
getCSS('/css/jquery.fancybox-1.3.4.css');
$.getScript('/js/jquery.fancybox-1.3.4.js', function(){
Fancybox.');
obj.each(function () {
$(this).fancybox(data);
})
});
}
De esta forma cuando llaméis a fancybox se cargará primero el javascript de forma asincrónica y después volverá a ejecutar el auténtico fancybox
Tienes un problema, cuando vas a llamar a fancybox repetitivamente en una pagina, te hace la carga de la libreria varias veces.
Saludos
Bueno di por hecho que getScripts tenía algun tipo de cache pero se podria crear que una vez pase por el getscripts no vuelva a pasar, haré una actualización en cuanto tenga un momento, gracias!