Domanda

Sto utilizzando i componenti YUI e desidero iniziare a utilizzare l'utilità Loader per specificare le mie dipendenze sulla mia pagina.Dalla tua esperienza, l'utilità YUI Loader è un modo affidabile per caricare le dipendenze Javascript nelle pagine web?

È stato utile?

Soluzione

Sì, YUI Loader è affidabile su tutti i browser di livello A.Per un elenco di quali browser Yahoo!considera di grado A, controlla il Grafico di supporto del browser classificato.

Altri suggerimenti

Generalmente sì.Niente dovrebbe andare storto e sicuramente, se così fosse, Yahoo risolverebbe il problema in pochissimo tempo!

Utilizzo molto il caricatore.È un ottimo modo per gestire le dipendenze e creare la tua libreria.

Ho riscontrato 3 problemi con esso:

  1. Debug: è difficile eseguire il debug.Il bug è nella definizione del caricatore del modulo o nel modulo (file script)?
  2. Devi aggiungere la tua funzione 'subscibeOnce' per aggiungere qualsiasi gestore 'sul modulo caricato'.Questo annulla l'iscrizione ai tuoi gestori dopo che il modulo è stato caricato/inserito nella pagina.Altrimenti, se inserisci più moduli più tardi nel corso della vita della pagina, verranno chiamati ogni volta.
  3. C'è un limite a quali dipendenze può capire.L'ordine all'interno di require:[] (nella definizione del modulo) sembra avere importanza.Ho visto fallire il tentativo di elaborare questo elenco.

Quello che uso è qualcosa del tipo:

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);
}

}

//aumentare con il fornitore di eventi

YAHOO.lang.augment(TheBase, YAHOO.util.EventProvider);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top