Napotkałem ten sam problem, co opisany. Napisałem wtyczkę, która zajmuje się dzieleniem wspólnych zależności między zagnieżdżonymi kontekstami.
Requirejs ma mapę, która zawiera wszystkie konteksty i to określono zależności:
requirejs.s.contexts
{
_: {
defined: {
commondep: {},
main: undefined
}
}
plugin: {
defined: {
commondep: {},
plugin: {}
}
}
}
Kontekst _ jest główny kontekst. Możemy wykorzystać ten kontekst do określenia wszystkich globalnych definicji modułów. Współdzielone zależności można określić wstępnie wczytując skrypty wtyczek i porównując zależności z globalnymi zależnościami. Udostępnione moduły mogą być wstrzykiwane w kontekście piaskownicy:
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];
}
W tym fragmencie nazywamy wymagają w sposób asynchroniczny bez uzyskania globalnego instancji modułu. Moduł jest wstrzykiwany w piaskownicy poprzez naciśnięcie go w kolejce definicji.
Implementację tego rozwiązania programu ładującego wtyczki można pobrać z https://github.com/igsp/requireplug.
Zamieściłem bardziej szczegółowy opis mechaniki tego rozwiązania na moim blogu: https://intergalacticspacepocket.wordpress.com/2014/08/07/nesting-requirejs-contexts-with-shared-dependencies/
Mam ten sam problem ... Jakbym go rozwiązać poprzez wstrzyknięcie odniesień do wspólnych modułów kiedy zainicjować każdą aplikację, ale byłoby świetnie, gdybyśmy mogli uzyskać dostęp do innych kontekstów z innego kontekstu – chchrist
problem można rozwiązać, pisząc wtyczkę require.js, aby zarządzać kontekstami, wtyczka może określić, czy zależność może zostać wyciągnięta z globalnego kontekstu, aby uniknąć wielu wnioski o tę samą zależność. Na to nie ma odpowiedzi, ponieważ nie ma otwartych rozwiązań. Zobacz http://requirejs.org/docs/plugins.html –
Użyj przeglądania: https://github.com/substack/node-browserify/ – avetisk