3

我一直在使用 YUI 组件并想开始使用加载器实用程序来指定我在页面上的依赖项。根据您的经验,YUI 加载器实用程序是在网页中加载 Javascript 依赖项的可靠方法吗?

4

3 回答 3

8

是的,YUI Loader 在所有 A 级浏览器上都是可靠的。查看 Yahoo! 浏览器列表 考虑 A 级,请查看分级浏览器支持图表

于 2008-09-18T04:26:08.540 回答
2

一般是的。什么都不会出错,如果确实如此,雅虎肯定会立即解决问题!

于 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 回答