3

YUI Components を使用してきましたが、Loader Utility を使用して自分のページの依存関係を指定したいと考えています。あなたの経験から、YUI Loader Utility は Web ページの Javascript 依存関係をロードする信頼できる方法ですか?

4

3 に答える 3

8

はい、YUI Loader はすべての A グレードのブラウザーで信頼できます。ブラウザのリストについては、Yahoo! は A グレードと見なします。Graded Browser Support Chartを確認してください。

于 2008-09-18T04:26:08.540 に答える
2

一般的にはい。何もうまくいかないはずですし、もしそうなら、yahoo はすぐに問題を解決するでしょう!

于 2008-09-18T03:49:01.717 に答える
1

ローダーをよく使います。これは、依存関係を管理し、ライブラリを構築するための優れた方法です。

私はそれで3つの問題に遭遇しました:

  1. デバッグ - デバッグが困難です。モジュールのローダー定義のバグですか、それともモジュール (スクリプト ファイル) のバグですか?
  2. 独自の「subscibeOnce」関数を追加して、「ロードされたモジュール上」のハンドラーを追加する必要があります。これにより、モジュールがページにロード/挿入された後、ハンドラーのサブスクライブが解除されます。それ以外の場合、ページの存続期間の後半でさらにモジュールを挿入すると、毎回呼び出されます。
  3. 把握できる依存関係には制限があります。requires:[] (モジュール定義内) 内での順序付けは重要なようです。このリストを処理しようとして失敗するのを見てきました。

私が使用するのは次のようなものです:

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

}

// イベント プロバイダによる拡張

YAHOO.lang.augment(TheBase, YAHOO.util.EventProvider);
于 2010-09-03T18:49:24.973 に答える