मैं एक मॉड्यूलर प्रोजेक्ट पर काम कर रहा हूं जो कि बहुत मॉड्यूलर के लिए डिज़ाइन किया गया है - sections of the app can be enabled and disabled for different clients using Webpack. यह संरचना अब तक मेरे लिए अच्छी तरह से काम कर रही है, लेकिन एक मुद्दा जो मैंने चलाया है यह काम कर रहा है कि उन सेवाओं को कैसे संभाला जाए जो हमेशा मौजूद नहीं हो सकते हैं।एक कोणीय सेवा तक पहुंचना जो
मेरे वर्तमान समाधान बहुत सरल है - मैं $injector.has()
का उपयोग करता है, तो सेवा वर्तमान में मौजूद है की जाँच करने के लिए, और यदि ऐसा है तो, मैं $injector.get()
का उपयोग यह हड़पने के लिए:
function initialize($injector) {
if ($injector.has("barcode")) {
let barcode = $injector.get("barcode");
// Do stuff with the barcode service
}
}
यह काम करने के लिए लगता है - हालांकि, मैं यह कर सकते हैं ' इस पैटर्न के उपयोग पर अधिक जानकारी नहीं मिलती है और क्या इसमें कोई संभावित डाउनसाइड्स है या नहीं।
तो, मेरे सवाल कर रहे हैं:
- वहाँ इंजेक्टर इस तरह से है कि मैं के बारे में पता होना चाहिए का उपयोग कर के लिए किसी भी चेतावनियां?
- क्या ऐसा करने का एक बेहतर/अधिक मूर्ख तरीका है?
शानदार उत्तर, बहुत बहुत धन्यवाद! कोणीय 2 की वैकल्पिक निर्भरताएं मैं जितनी अधिक हूं - यह तब तक एक स्टॉपगैप समाधान है जब तक कि हम माइग्रेट नहीं कर सकते (वर्तमान में अपडेट करने के लिए किसी तृतीय पक्ष UI ढांचे पर प्रतीक्षा कर रहे हैं, जो उम्मीद है कि इस शताब्दी में कुछ समय लगेगा ...) –
निर्भर आपकी ज़रूरतों पर, 'स्टब' सेवाओं को बनाने के साथ प्रयोग करने के लायक भी हो सकते हैं जो वैकल्पिक लोगों के लिए खड़े हो सकते हैं, जिससे आप अभी भी DI प्राप्त कर सकते हैं। मुझे डबल चेक करना होगा, लेकिन मेरा मानना है कि एंगुलर आपको पहले प्रदान की गई सेवा को पकड़ने की अनुमति देगा यदि आप एक ही नाम का नया खाता लोड करते हैं। और/या आप सजावटी (https://docs.angularjs.org/guide/decorators) का उपयोग करके उन 'स्टब्स' को प्रतिस्थापित या सजा सकते हैं। शायद जटिलता का वजन करने लायक है। मैंने इसका परीक्षण नहीं किया है ... – JcT
हाँ, ऐसा कुछ ऐसा लगता है जो देखने लायक होगा - केवल एक मामला यह है कि जोड़ा गया जटिलता इसके लायक होगा या नहीं। मैं मिनट में अपनी फर्म में एकमात्र जावास्क्रिप्ट लड़का हूं, और मुझे हर किसी को सिखाना होगा, इसलिए मैं इसे सरल रखने की ओर झुका रहा हूं: पी –