Вопрос

Я использую компоненты YUI и хочу начать использовать утилиту загрузчика, чтобы указать свои зависимости на моей странице.Судя по вашему опыту, является ли YUI Loader Utility надежным способом загрузки зависимостей Javascript на веб-страницах?

Это было полезно?

Решение

Да, YUI Loader надежен во всех браузерах класса А.Список браузеров Yahoo!считает А-оценку, посмотрите Таблица ступенчатой ​​поддержки браузеров.

Другие советы

В целом да.Ничто не должно пойти не так, и, конечно же, если бы это произошло, Yahoo бы сразу же решил проблему!

Я часто пользуюсь загрузчиком.Это отличный способ управлять зависимостями и создавать библиотеку.

Я столкнулся с 3 проблемами:

  1. Отладка - отлаживать сложно.Ошибка в определении загрузчика модуля или в самом модуле (файле сценария)?
  2. Вам необходимо добавить свою собственную функцию «subscibeOnce», чтобы добавить любые обработчики «при загрузке модуля (ов)».Это отменяет подписку на ваши обработчики после загрузки/вставки модуля на страницу.В противном случае, если вы вставите больше модулей позже в течение жизненного цикла страницы, они будут вызываться каждый раз.
  3. Существует предел тому, какие зависимости он может определить.Порядок внутри require:[] (в определении модуля), кажется, имеет значение.Я видел, как он не смог проработать этот список.

Я использую что-то вроде:

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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top