私はそれをテストしておらず、微調整が必要かもしれませんが、これは私ができると思う方法です。
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 つ目は、リモートのようなもので、説明するには長すぎます。全く起こらないかもしれないので、後回しにしましょう。