1

ですから、私が開発して個別にテストする小さなライブラリ コードがあるとしましょう。私は開発中に 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

質問:

  1. スコーピングに関して、それは通常の動作ですか? lib/main他の場所を探すのではなく、同じファイルからのモジュール ID として認識されるという事実。すべてが を持つ 10 個のライブラリをインポートするlib/mainと、それらは衝突しませんか?
  2. より良い方法はありますか?AMD 以外のユース ケースをサポートすることについては、少なくとも当初は気にしていません。これはすべて内部の lib 開発であり、全員が RequireJS を使用しているためです。したがって、完全に AMD 化された環境内で、これを行うための別のより良い方法はありますか? このアプローチに落とし穴がないと仮定すると、サポートするのは非常に単純でボイラープレートのように思えます。
4

0 に答える 0