ですから、私が開発して個別にテストする小さなライブラリ コードがあるとしましょう。私は開発中に RequireJS を使用し、他の 1 つのファイルに依存するルート レベルのファイルを持っています。だから、それは次のdefine
ように見えます...
// lib/main.js
define(['lib/dep1'] function(dep1) {
...
})
コードで r.js を実行するとdist/myLibrary.js
、次のようになります。
define('lib/dep1',[], function(){...})
define('lib/main',["lib/dep1"], function(dep1){...})
myLibrary.js
別のプロジェクトに直接引き込むと、うまくいきません。そのファイルのモジュールとして自身を定義しているものはありません。しかし、実際のモジュール定義を追加すると、機能します。
define('lib/dep1',[], function(){...})
define('lib/main',["lib/dep1"], function(dep1){...})
define(['lib/main'], function(lib) {
return lib;
})
また、アプリに実際のものがある場合、それは使用されない['lib/main']
ため、モジュールにスコープが設定されているようです。lib/main
質問:
- スコーピングに関して、それは通常の動作ですか?
lib/main
他の場所を探すのではなく、同じファイルからのモジュール ID として認識されるという事実。すべてが を持つ 10 個のライブラリをインポートするlib/main
と、それらは衝突しませんか? - より良い方法はありますか?AMD 以外のユース ケースをサポートすることについては、少なくとも当初は気にしていません。これはすべて内部の lib 開発であり、全員が RequireJS を使用しているためです。したがって、完全に AMD 化された環境内で、これを行うための別のより良い方法はありますか? このアプローチに落とし穴がないと仮定すると、サポートするのは非常に単純でボイラープレートのように思えます。