2

YUI2 コードを YUI 2-in-3 形式に変更する作業を行っています。JS コードで Y.YUI2 オブジェクト (YAHOO オブジェクト) にアクセスする必要があります。

このオブジェクトはJSコードの何百もの場所で使用されているため、このオブジェクトがグローバルに必要なので、必要なたびにコールバックを介してアクセスするのではなく、簡単にアクセスできる方法が必要です.HTMLファイルが1つしかないため、もっと簡単な方法。

SimpleYUI を使用しています。したがって、私の主な目的は、グローバル Y オブジェクトに YUI2 値を取得させることです。use() は残りのコードとその下のコードをブロックしないため、Y.use(.....) 経由では実行できません。 YAHOO オブジェクト。

ありがとう

4

1 に答える 1

2

最近、プロジェクトを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は、ページの複数の場所でコードを記述していて、まだ完全にリファクタリングする時間がない場合に、より適切に機能します。

于 2012-03-26T11:27:06.313 に答える