Недавно я работал над переносом своих проектов из YUI 2.x в YUI 3.x. Здесь я хочу поделиться своим опытом и решением.
Во-первых, я думаю, вы прочитали статью: «Работа с YUI 2 в 3» (http://yuilibrary.com/yui/docs/yui/yui-yui2.html). К сожалению, этот подход заставил вас покрыть весь существующий код JS в новые структуры, называемые модулями, такими как
YUI.add('mymodule-uses-yui2', function(Y) {
var YAHOO = Y.YUI2;
/* my old JS code based on YUI 2 placed here */
}, '1.0', {requires: 'yui2-modules'});
и затем используйте эти модули в песочнице:
YUI().use('...', 'yui2-modules', 'mymodule-uses-yui2', function(Y) {
var YAHOO = Y.YUI2;
});
Это приводит к большой работе над существующей кодовой базой для создания модулей и исправления зависимостей.
Я обнаружил, что могу избежать этого на первом этапе рекаторинга: я продолжаю загружать все компоненты YUI 2 статически в тег скрипта, как всегда. В этом случае глобальный объект YAHOO доступен везде, и мой старый код просто работает. Затем я начал писать новый код (или переписывать старый код), используя YUI 3 рядом со своим старым кодом - никаких конфликтов! Вы также можете шаг за шагом покрыть свой старый код новыми модулями моды (YUI.add) и по-прежнему использовать там глобальный YAHOO (без использования Y.YUI2). И вам не нужно заставлять все свои силы покрывать весь старый код за один раз новыми модулями.
Я также обнаружил, что SimpleYUI более полезен для меня, чем песочница каждый раз в YUI (). Use (...), потому что в настоящее время у меня есть много мест на странице, где мне нужен только один небольшой фрагмент кода JS. SimpleYU Я делаю это лучше, если у вас есть код на странице в нескольких местах, и у вас еще нет времени на полный рефакторинг.