このアプローチは、ビルド ツールに問題を引き起こす可能性があります。
アップデート:
さらに調査した結果、メインの JS ファイルの構成設定がオプティマイザーによってデフォルトで読み取られないことがわかりました。したがって、よりクリーンなソリューションは、クライアントとサーバーに異なるマップ構成を使用することです。
オリジナル:
より安全なアプローチは、環境に適応するモジュールを定義することです。これにより、すべての条件付きコードをモジュール定義内に保持し、すべての依存関係リストを最も信頼できる形式のままにします。
// dependent module
define(["libraryAB"], function (library) {
//do some stuff
});
// libraryAB.js dependency module
define([], function () {
return window ?
defineLibraryA() :
defineLibraryB();
});
または、この方法で定義することにより、libraryA
とコードを分離しておくこともできます。libraryB
libraryAB
// libraryAB.js dependency module
define(["libraryA", "libraryB"], function (libraryA, libraryB) {
return window ? libraryA : libraryB;
});
//define libraryA.js and libraryB.js as usual
libraryA
サーバーまたはクライアントでの実行を避けたい場合はlibraryB
、これらのモジュールに関数を返させ、必要に応じて結果を記憶させることができます。
教訓は、すべての非標準コードをモジュール定義内に保持し、依存関係リストを適切で予測可能な状態に保つことが最も安全であるということです。