Frage

Ich habe die YUI-Komponenten wurde verwenden und das -Ladedienstprogramm beginne mit meinen Abhängigkeiten auf meiner Seite angeben. Ihre Erfahrung nach ist der YUI Loader-Dienstprogramm eine zuverlässige Art und Weise Javascript Abhängigkeiten in Web-Seiten zu laden?

War es hilfreich?

Lösung

Ja, YUI Loader ist zuverlässig auf alle A-Klasse-Browser. Eine Liste von welchen Browsern Yahoo! A-Klasse hält Besuche die Graded Browser Support-Diagramm .

Andere Tipps

Im Allgemeinen ja. Es soll nichts schief gehen, und sicher, wenn es tut, yahoo in kürzester Zeit auf das Problem wäre!

Ich verwende den Lader viel. Es ist eine gute Möglichkeit, Abhängigkeiten zu verwalten und Ihnen Bibliothek um zu bauen.

Ich habe laufen in 3 Probleme mit ihm:

  1. Debugging - es ist schwierig zu debuggen. Ist der Fehler im Loader Definition des Moduls oder ist es in dem Modul (Skriptdatei)?
  2. Sie haben eine eigene ‚subscibeOnce‘ Funktion hinzufügen alle ‚auf Modul (e) geladen‘ Handler hinzuzufügen. Dieses Abo kündigt Ihren Handler, nachdem das Modul in die Seite geladen / eingefügt wurde. Andernfalls, wenn Sie weitere Module später in der Seite Lebensdauer einfügen - nannten sie jedes Mal
  3. .
  4. Es gibt eine Grenze, welche Abhängigkeiten es herausfinden können. Bestellung innerhalb der erfordert: [] (in der Moduldefinition) zu Materie scheint. Ich habe es versucht, gesehen nicht durch diese Liste zu arbeiten.

Was ich benutze, ist so etwas wie:

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

}

// erweitert mit Ereignisanbietern

YAHOO.lang.augment(TheBase, YAHOO.util.EventProvider);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top