मुझे आपके द्वारा वर्णित एक ही समस्या का सामना करना पड़ा। मैंने एक प्लगइन लिखा है जो नेस्टेड संदर्भों के बीच सामान्य निर्भरताओं को साझा करने का ख्याल रखता है।
requirejs.s.contexts
{
_: {
defined: {
commondep: {},
main: undefined
}
}
plugin: {
defined: {
commondep: {},
plugin: {}
}
}
}
_ संदर्भ मुख्य संदर्भ है:
Requirejs एक नक्शा जो सभी संदर्भों में शामिल है और यह निर्भरता परिभाषित किया है। हम सभी वैश्विक मॉड्यूल परिभाषाओं को निर्धारित करने के लिए इस संदर्भ का उपयोग कर सकते हैं। साझा निर्भरताओं को प्लगइन स्क्रिप्ट को प्री-लोड करके और निर्भरताओं की तुलना वैश्विक निर्भरताओं से की जा सकती है। साझा मॉड्यूल सैंडबॉक्स संदर्भ में इंजेक्ट किया जा सकता है:
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];
}
इस स्निपेट हम फोन में एक गैर async रास्ता मॉड्यूल के वैश्विक उदाहरण प्राप्त करने के लिए आवश्यकता होती है। मॉड्यूल को परिभाषा कतार पर दबाकर सैंडबॉक्स में इंजेक्शन दिया जाता है।
प्लगइन लोडर के इस समाधान का कार्यान्वयन https://github.com/igsp/requireplug से डाउनलोड किया जा सकता है।
मैं अपने ब्लॉग पर इस समाधान का यांत्रिकी के एक अधिक विस्तृत विवरण पोस्ट: https://intergalacticspacepocket.wordpress.com/2014/08/07/nesting-requirejs-contexts-with-shared-dependencies/
स्रोत
2014-08-07 00:15:30
मैं एक ही समस्या है ... मैं थोड़े आम मॉड्यूल के लिए संदर्भ इंजेक्शन जब मैं प्रत्येक अनुप्रयोग को प्रारंभ से इसे हल, लेकिन यह अच्छा होगा अगर हम किसी अन्य संदर्भ से अन्य संदर्भों को प्राप्त कर सकें – chchrist
संदर्भों को प्रबंधित करने के लिए requ.js प्लगइन लिखकर हल किया जा सकता है, प्लगइन यह निर्धारित कर सकता है कि एकाधिक संदर्भ से बचने के लिए वैश्विक संदर्भ से निर्भरता को खींचा जा सकता है या नहीं एक ही निर्भरता के लिए अनुरोध। इस तारीख के लिए कोई जवाब नहीं है क्योंकि कोई खुले सोर्स किए गए समाधान नहीं हैं। Http://requirejs.org/docs/plugins.html –
ब्राउज़र का उपयोग करें: https://github.com/substack/node-browserify/ – avetisk