説明したのと同じ問題が発生しました。ネストされたコンテキスト間の共通の依存関係を共有するためのプラグインを作成しました。
Requirejsは、すべてのコンテキストを含むマップを持っており、それが依存関係を定義しています:
requirejs.s.contexts
{
_: {
defined: {
commondep: {},
main: undefined
}
}
plugin: {
defined: {
commondep: {},
plugin: {}
}
}
}
_文脈主なコンテキストがあります。このコンテキストを使用して、すべてのグローバルモジュール定義を決定することができます。共有依存関係は、プラグインスクリプトをあらかじめロードし、依存関係をグローバル依存関係と比較することで判断できます。我々はモジュールのグローバルインスタンスを取得するために、非非同期な方法で必要と呼んこのスニペットで
function injectDependency(dependencyName, contextName) {
var ctx = getContext(contextName);
var dependencyInstance = require(dependencyName);
ctx.defQueue.push([ dependencyName, [], function() { return dependencyInstance; }]);
}
function getContext(contextName) {
return requirejs.s.contexts[contextName];
}
:共有モジュールは、サンドボックスのコンテキストに注入することができます。モジュールは定義キューにプッシュすることでサンドボックスに挿入されます。
プラグインローダーのこのソリューションの実装は、https://github.com/igsp/requireplugからダウンロードできます。私は私のブログにこのソリューションの仕組みについてのより詳細な説明掲載
:私は同じ問題を抱えている https://intergalacticspacepocket.wordpress.com/2014/08/07/nesting-requirejs-contexts-with-shared-dependencies/
を...私はちょっと、私は、各アプリケーションを初期化する際に、共通のモジュールへの参照を注入することによってそれを解決し、しかし、別のコンテキストから他のコンテキストへのアクセスが可能であれば素晴らしいことでしょう – chchrist
コンテキストを管理するためにrequire.jsプラグインを作成することで問題を解決できる場合、プラグインはグローバルコンテキストから依存関係を取り除いて複数を回避できるかどうかを判断できます同じ依存関係の要求オープンソーシングのソリューションがないため、これまでのところ、これに対する回答はありません。 http://requirejs.org/docs/plugins.html –
ブラウザを使用してください:https://github.com/substack/node-browserify/ – avetisk