開発中のJavaScriptライブラリに対してRequireJSを使用することに決めました。私はRequireJSのことではなく、私たちのライブラリのモジュール名が私たちのライブラリを使用するアプリケーションのモジュールと確実に衝突しないようにするために何をしなければならないのだろうかと思います。例えば、私はモジュールencoding.jsを定義する場合:名前衝突によりRequireJSでJavaScriptライブラリを構築
define("encoding", ["dependency"], function(myDep) {
...
})
私のライブラリを使用し、独自にencoding.jsを持っているアプリケーションは、名前の衝突をもたらすと思われます。ライブラリを使用するアプリケーションからライブラリ名を「保護」するために使用できるReuireJSオプションはありますか?
また、最初のパラメータ "encoding"はオプションです。私が追加した理由は、minify-maven-pluginを使ってライブラリを構築したことです。これにより、ライブラリ内のすべてのモジュールが1つのファイルになり、モジュール名を追加する必要があるようです。そうしないと、匿名のモジュール定義エラー(http://requirejs.org/docs/errors.html#mismatch)が一致しません。私は代わりにr.js最適化ツールを使うかもしれないと思います。名前衝突の問題を取り除くためにそれを設定することもできますか?
私たちは、おそらくのようなものの内部でコールを定義しカプセル化することにより、当社のライブラリRequireJSに依存しない作りますね。実際に:Creating a reusable RequireJs libraryが、それは明確な答えが得られませんでした:私はこのトピックを見つけ
(function(root, factory) {
if (typeof define === "function" && define.amd) {
define("encoding", ["dependency"], factory);
} else {
root.MyLib.Encoding = factory(MyLib.Deps);
}
}(this, function() {
...
}))
私が探していたものではありません。