Я работаю в среде портала. Я хочу, чтобы несколько портлетов использовали некоторые распространенные модули YUI. Я также хочу, чтобы портлеты были на 100% автономными. Другими словами, я не хочу, чтобы JUI.add вызывал универсальный JS на уровне портала.Безопасно ли вызывать YUI.add для одного и того же модуля более одного раза на одной странице?
Итак, каждый портлет имеет копию того же JS-кода (добавленный процессом сборки из общей зависимости, я не вручную держите код в синхронизации по портлетам). Если на одной странице находится несколько портлетов, это означает, что каждый из них будет вызываться YUI.add. Это вызовет проблемы? Я мог бы поместить все JS в отдельный сервлет и позволить динамическому загрузчику YUI позаботиться об этом, но это приведет к внешней зависимости. Для того, чтобы портлетов для работы, сервлет должен быть развернут ...
спасибо, вот как я тоже прочитал код, меня просто беспокоило, что 'env.mods [name] = mod;' on line [560] (http://yuilibrary.com/yui/docs/ api/files/yui_js_yui.js.html # l560) слепо добавлял новое определение модуля в глобальный объект 'YUI.Env', не проверяя, был ли он уже определен. Можно ли предположить, что нет никаких отрицательных побочных эффектов? – Lucas
@Lucas Пока все ваши избыточные вызовы 'add' идентичны, я не вижу никаких отрицательных побочных эффектов. Это просто назначение ~, так что даже меньшие накладные расходы, чем цикл через экземпляры YUI. – Shad
, чтобы они оставались одинаковыми ... вот что я подумал. Хотя это делает вещи немного сложнее, так как теперь, если портлет обновляется с более новой версией этого модуля, все остальные портлеты на этой странице также должны быть обновлены, поскольку он помещает определение по имени и игнорирует номер версии ... не такой портативный, как хотелось бы, но, похоже, у меня нет выбора. Угадайте, что я могу проверить YUI.Env самостоятельно, прежде чем называть add, но это похоже на то, что должно быть в рамках ... – Lucas