オプションでモジュールを定義し、それを自分のコードで使用するかどうかを知りたいと思っています。私が検討している特定の状況は、モック/スタブモジュールをデバッグ/テスト環境にロードすることですが、ライブに行くときはロードしません。 JSファイルは、必要に応じて(擬似コード)ロードされるHTMLファイルにrequirejsを使用すると、モジュールがロードしようとせずに定義されているかどうかを確認できますか?
:両方real_serviceとmock_service上記で
//index.cshtml
...
<script src="/Scripts/lib/require.js"></script>
<script src="/Scripts/app/service_user.js"></script>
<script src="/Scripts/app/real_service.js"></script>
#if DEBUG
<script src="/Scripts/app/mock_service.js"></script>
#endif
デバッグバージョンにロードされなければならない。ここでの例です。
各モジュールはrequirejs、例えば使用して定義されます:「
//service_user.js
define(['require', 'real_service'],
function (require, real_service) {
if (require.isDefined('mock_service')) { // 'isDefined' is what I wish was available
var mock = require('mock_service');
mock.init(real_service);
}
...
});
だから私の想定元本:サービスを使用する際にその後、私はmock_serviceが定義されているかどうかを確認したいと思います
//mock_service.js
define('mock_service', [],
function() {
...
});
//real_service.js
define('real_service', [],
function() {
...
});
をisDefined '関数は定義されている与えられた名前(または名前?)を持つモジュールをチェックするだけです。私のコードでは、それが定義されている場合、私はそれを要求して使用することができます。そうでない場合は、それも良いです。
重要なことは、オプションモジュールをロードしようとしていないことです。私はtry/requireステートメントの周りにキャッチすることができますが、それはサーバーからそれをロードしようとすると、私はそれを望んでいないの原因になります。
別のオプションは、私が常に読み込むスタブ定義を持つことで、実際に必要かどうかを調べることができます。
require.jsに深く関わっている人がいますが、この機能が必要であり、実装のための戦略を策定していますか?
は、私はちょうどこのために自分を探していた、事前にロブ
Thx - これは私のニーズにほぼ合致し、私が今追加して完全な解決策としてマークした正しい答えを見つけるのを助けました。 – WooWaaBob
+1素晴らしい答えと素晴らしい機能は、この1つについて知りませんでした! – thomaux
ちょうど好奇心が強い、アーモンドバージョンの代替品があれば? –