私はそれをテストしておらず、微調整が必要かもしれませんが、これは私ができると思う方法です。
YUI ローダーを使用すると、YUI 自体の複数のバージョンをロードできます。Yこれが、要求されたモジュールのロードが完了したときに呼び出すコールバックに通常呼び出される引数を提供する理由です。
YUI().use('moduleA', 'moduleB', ... , function (Y) {
複数回呼び出すことができ、それぞれが要求されたモジュールを使用しYUI().use()て独自のバージョンの を提供します。Y
さらに、呼び出しをネストできますuse()
YUI().use('moduleA', 'moduleB', ... , function (Y) {
// ......
Y.use('moduleC', function (X) {
2 番目のインスタンスではX、コールバックの引数として使用したので、使用可能なX場所'moduleC'と使用できYない場所を実際に使用できます。他のモジュールは、 と の両方Xで使用できますY。または、単純に 1 つを閉じYUI().use()て、それぞれ独自のモジュールを持つ別のものを開始することもできます ( http://yuilibrary.com/yui/docs/yui/yui-multi.htmlを参照)。
外部モジュールについては、このビデオの約 42 分をご覧ください。Y外部モジュールをロードし、それらをそのモジュールまたはX任意のモジュールに統合する方法を示します。イベントへのコールバックonProgressで、ロードされたモジュールが YUI インスタンスに追加されます。つまりY、 が呼び出されYUI.add()ます。のYコールバックに提供される引数は、 のコールバックでYUI.add()取得する引数と同じですYUI().use()。
そのため、外部モジュールを定義して、それぞれ、各バージョンなど、異なるモジュール名を指定し、それぞれがそのバージョンに対応するパスを指すようにする必要があります。各バージョンが共通のルート パスを共有している場合 base、構成属性のgroups構成 ( http://yuilibrary.com/yui/docs/yui/loader.html#example-configを参照) が便利です。
私が考えることができる2つの落とし穴。まず、外部ライブラリがすべてをグローバル変数にロードすると、2 番目のバージョンをロードするときに、最初にロードされたものの残りが残ります。それによって競合が発生する場合は、そのグローバル オブジェクトへの参照を に配置した後で、そのグローバル オブジェクトを削除する必要がある場合がありますY。これは、モジュールのバッチ全体がロードされた後、おそらくonSuccessコールバックではなく、onProgressコールバックで実行する必要があります。そうしないと、後のモジュールの依存関係が消去されるためです。
2 つ目は、リモートのようなもので、説明するには長すぎます。全く起こらないかもしれないので、後回しにしましょう。