Pregunta

He estado usando los componentes YUI y quiero comenzar a usar la utilidad Loader para especificar mis dependencias en mi página.Según su experiencia, ¿la utilidad YUI Loader es una forma confiable de cargar dependencias de Javascript en páginas web?

¿Fue útil?

Solución

Sí, YUI Loader es confiable en todos los navegadores de categoría A.Para obtener una lista de los navegadores Yahoo!considera calificación A, consulte el Cuadro de soporte de navegador calificado.

Otros consejos

Generalmente sí.Nada debería salir mal y, seguramente, si sucediera, Google se ocuparía del problema en poco tiempo.

Utilizo mucho el cargador.Es una excelente manera de administrar dependencias y crear su biblioteca.

Me he encontrado con 3 problemas:

  1. Depuración: es difícil depurar.¿El error está en la definición del cargador del módulo o en el módulo (archivo de script)?
  2. Debe agregar su propia función 'subscibeOnce' para agregar cualquier controlador 'en los módulos cargados'.Esto cancela la suscripción de sus controladores después de que el módulo se haya cargado/insertado en la página.De lo contrario, si inserta más módulos más adelante en la vida útil de la página, llamarán cada vez.
  3. Hay un límite en cuanto a las dependencias que puede descubrir.Ordenar dentro de los requisitos: [] (en la definición del módulo) parece importar.He visto que falla al intentar revisar esta lista.

Lo que uso es algo como:

var TheBase = function(oConfig){
var thisBase = this;
var EVENTS = {
    ON_SCRIPTS_LOADED : "onScriptsLoaded"
    , ON_SCRIPTS_PROGRESS : "onScriptsProgress"
}
for(var eventName in EVENTS){
    thisBase.createEvent(EVENTS[eventName]);    
}
var _loader = new YAHOO.util.YUILoader({
    base: oConfig.yuiBasePath
    ,onSuccess:function(o){
        thisBase.fireEvent(EVENTS.ON_SCRIPTS_LOADED);
    }
    ,onProgress:function(o){
        thisBase.fireEvent(EVENTS.ON_SCRIPTS_PROGRESS,o.name);
    }
})
//optional
    thisBase.loader = _loader;

}

TheBase.prototype = {
subscribeOnce : function(eventName, fnc, context, args){
    var that = this;
    var handler = function hander(){
        fnc.apply(context, arguments);
        that.unsubscribe(eventName, handler);
    }
    this.subscribe(eventName, handler, args, false);
}

}

//aumentar con proveedor de eventos

YAHOO.lang.augment(TheBase, YAHOO.util.EventProvider);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top