最近、プロジェクトをYUI2.xからYUI3.xに移行する作業をしていました。ここで私の経験と解決策を共有したいと思います。
「YUI2in3での作業」(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;
});
これにより、既存のコードベースでモジュールを作成し、依存関係を修正するための多くの作業が発生します。
リケータリングの最初の段階でそれを回避できることがわかりました。いつものように、すべてのYUI2コンポーネントをスクリプトタグに静的にロードし続けます。この場合、グローバルYAHOOオブジェクトはどこでも利用でき、私の古いコードは正しく機能します。次に、古いコードの近くでYUI 3を使用して新しいコードを書き始めました(または古いコードを書き直しました)。競合はまったくありません。また、古いコードを新しいファッションモジュール(YUI.add)に段階的にカバーし、そこでグローバルYAHOOを使用することもできます(Y.YUI2を使用せずに)。また、すべての古いコードを一度に新しいモジュールにカバーするために、すべての力を強制する必要はありません。
また、SimpleYUIは、YUI()。use(...)に毎回サンドボックス化するよりも便利であることがわかりました。これは、現在、ページ上にJSコードの小さなピースが1つだけ必要な場所がたくさんあるためです。SimpleYUIは、ページの複数の場所でコードを記述していて、まだ完全にリファクタリングする時間がない場合に、より適切に機能します。