Я не участвовал в миграции, но я внес вклад в галерею YUI 3, и я также знаю, что есть запись в галерее, которая позволяет использовать любой класс из YUI 2 в YUI 3. Я думаю, главное преимущество YUI 3 - это возможность загружать то, что вы хотите по требованию. Вы включаете 1 файл javascript, а затем используете следующую строку для использования любых модулей в yui, которые вы хотите.
YUI().use('dom',function(){
// your code here
});
Преимущество этого состоит в том, что он загружает модуль DOM и делает доступным ТОЛЬКО в рамках этой функции. Это хорошо, потому что загружает только те модули, которые вы хотите, в определенной области. Это предотвратит конфликты с любыми другими платформами JS, если вы их используете.
Если вы хотите добавить свой собственный пользовательский модуль, вы должны сделать что-то вроде этого
YUI().add('mycustompackage',function(Y){
MyCustom.package.SomeClass = function(){}
MyCustom.package.SomeClass.prototype = {}
},'1.0.0',{requires:['base','dom','event'],use:['node']});
Это добавит ваш модуль и зарегистрирует зависимости, так что вы можете использовать его, сказав
YUI().use('mycustompackage',function(){
// code goes here
});
Полагаю, из того, что я вижу, основные преимущества - более безопасный и переносимый фреймворк. Вы можете сделать модули YUI 3 доступными ТОЛЬКО в рамках определенной области действия. Это освобождает основной объем страницы для других вещей, если вы хотите. Это также более безопасно, определение ваших функций находится в закрытой области видимости, поэтому у них нет хуков глобальных переменных, которые можно было бы использовать, скажем, путем внедрения скрипта или чего-то еще.