Юи 2 до Юи-2-в-3 - PullRequest
       76

Юи 2 до Юи-2-в-3

2 голосов
/ 29 февраля 2012

Я работаю над тем, чтобы изменить код YUI2 на форму YUI 2-в-3.Мне нужен доступ к объекту Y.YUI2 (объект YAHOO) в моих кодах JS.

Мне нужен этот объект глобально, потому что этот объект используется в сотнях мест в кодах JS, поэтому я хочу получить более простой способ доступаэто вместо того, чтобы обращаться к нему через обратный вызов каждый раз, когда мне это нужно. Поскольку у меня есть только один файл HTML, должен быть более простой способ.

Я использую SimpleYUI.Поэтому моя главная цель - сделать так, чтобы глобальный объект Y получил значение YUI2. Я не могу сделать это с помощью Y.use (.....), потому что use () не блокирует остальную часть кода и код, который ему нуженYAHOO объект.

Спасибо

1 Ответ

2 голосов
/ 26 марта 2012

Недавно я работал над переносом своих проектов из 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 Я делаю это лучше, если у вас есть код на странице в нескольких местах, и у вас еще нет времени на полный рефакторинг.

...