7

में निर्भरता इंजेक्ट करें क्या सी # या जावा जैसी अन्य प्रोग्रामिंग भाषाओं जैसे ES2015 मॉड्यूल में निर्भरता इंजेक्ट करना संभव है? यदि मैं एक मॉड्यूल आयात करता हूं तो मैं इसके लिए एक कठिन निर्भरता बनाता हूं और इसे बाद में रनटाइम पर नहीं बदल सकता। उदाहरण के लिए मेरे पास निम्नलिखित जावास्क्रिप्ट कोड हैं:ES2015 मॉड्यूल

import Animal from './dog'; 

class Person { 
    feedAnimal() { 
    new Animal().feed(); 
    } 
} 

मैं कुत्ते मॉड्यूल आयात कर रहा हूं। लेकिन अगर मैं इसे बिल्ली में बदलना चाहता हूं तो क्या होगा? फिलहाल मुझे लाइन 1 को हाथ से संशोधित करना है, लेकिन कुछ परिस्थितियों में मैं इसे बाहर से कॉन्फ़िगर करने योग्य बनाना चाहता हूं ताकि कुछ स्थितियों में एक बिल्ली हो और कुछ अन्य स्थितियों में यह बिल्ली हो। शास्त्रीय निर्भरता इंजेक्शन के साथ उन सभी चीजों को किया जा सकता है।

मैं जानता हूँ कि कुछ डि वहाँ चौखटे Scatter, Electrolyte, Wire और इतने पर लेकिन दुर्भाग्य की तरह उनमें से ज्यादातर कुछ विशेष वाक्य रचना की आवश्यकता होती है और ES2015 modules के लिए बने नहीं हैं देखते हैं।

+1

आप निर्भरता इंजेक्शन को काम करने के लिए कैसे चाहते हैं? आप 'वर्ग व्यक्ति {कन्स्ट्रक्टर (पशु) {यह। अनंत = पशु कर सकते हैं; } feedAnimal() {नया यह। अंतिम() फ़ीड()}} ', लेकिन ऐसा लगता है जैसे आप कुछ और अधिक उन्नत उम्मीद करते हैं। – lyschoening

+0

मुझे यकीन नहीं है कि ['requ-inject'] (https://www.npmjs.com/package/require-inject) इसका समर्थन करता है, लेकिन आप एक नज़र रखना चाहेंगे। – thefourtheye

+0

@lyschoening धन्यवाद, लेकिन मैं आंतरिक मॉड्यूल निर्भरताओं को बदलना चाहता हूं जैसे कि मैं एक यूनिट टेस्ट लिखूंगा। – LongFlick

उत्तर

-1

मैं SystemJS पर स्थानांतरित हो गया। SystemJS के साथ आप System.import('foo').then(() => console.log('Loaded));

गतिशील आयात कर सकते हैं एक और फायदा यह है कि सिस्टम नई ईसीएमएस्क्रिप्ट मानक मॉड्यूल लोडर सिस्टम होगा।

2

आप निर्भरता को गतिशील रूप से परिभाषित नहीं कर सकते हैं। See this question and its accepted answer:

प्रश्न: ES6 Node.js में चर आयात नाम?

उत्तर: आयात विवरण के साथ नहीं। आयात और निर्यात इस तरह से परिभाषित किए जाते हैं कि वे स्थिर रूप से विश्लेषण योग्य हैं, इसलिए वे रनटाइम जानकारी पर निर्भर नहीं हो सकते हैं।

+0

हम्म ठीक है। बहुत बुरा। क्या आप इसके लिए कोई कामकाज या ऐसा कुछ जानते हैं? – LongFlick

+0

एक मॉड्यूल लोडर जैसे [SystemJS] (https://github.com/systemjs/systemjs/blob/master/README.md) जो आप चाहते हैं उसे अनुमति देगा। – sdgluck

+2

मैं खुद से पूछता हूं कि सभी मॉड्यूल परीक्षण परीक्षण कैसे करते हैं यदि मैं अपने मॉड्यूल में परीक्षण करने के लिए किसी भी निर्भरता का नकल नहीं कर सकता? – LongFlick

2

यदि आप वेबपैक के साथ बंडल कर रहे हैं तो आप इसे प्राप्त करने के लिए inject-loader का उपयोग कर सकते हैं।

उम्मीद है कि यह किसी ऐसे व्यक्ति की मदद करता है जो इस पुरानी पोस्ट पर ठोकर खाता है।

संबंधित मुद्दे