जावास्क्रिप्ट में डिपेंडेंसी इंजेक्शन: शुरुआती लोगों के लिए पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

जावास्क्रिप्ट में डिपेंडेंसी इंजेक्शन: यह क्या है और इसकी आवश्यकता क्यों है



आधुनिक जावास्क्रिप्ट (Node.js) विकास की दुनिया में, कोड की स्वच्छता और रखरखाव क्षमता अत्यंत महत्वपूर्ण हो जाती है। इसे प्राप्त करने में मदद करने वाले प्रमुख सिद्धांतों में से एक है डिपेंडेंसी इंजेक्शन (DI) — निर्भरताओं का इंजेक्शन। यह लेख विशेष रूप से शुरुआती लोगों के लिए बनाया गया है, ताकि व्यावहारिक उदाहरणों के साथ सरल भाषा में इस अवधारणा को समझाया जा सके।



कल्पना करें कि आप एक कंप्यूटर असेंबल कर रहे हैं। ग्राफिक्स कार्ड को सीधे मदरबोर्ड में स्थायी रूप से जोड़ने के बजाय, आप PCI-E स्लॉट का उपयोग करते हैं। यह आपको ग्राफिक्स कार्ड को अधिक शक्तिशाली कार्ड से बदलने या परीक्षण के लिए दूसरे का उपयोग करने की अनुमति देता है। डिपेंडेंसी इंजेक्शन उसी सिद्धांत पर काम करता है: आप क्लास के अंदर निर्भरताएँ नहीं बनाते (उन्हें "जोड़ते" नहीं), बल्कि उन्हें बाहर से पास करते हैं।



डिपेंडेंसी इंजेक्शन के बिना समस्या



Node.js पर एक विशिष्ट उदाहरण देखें, जहाँ कोड कसकर युग्मित (tightly coupled) हो जाता है:



class Logger {    log(message) {        console.log(`[LOG]: ${message}`);    }}

class UserService { constructor() { this.logger = new Logger(); // कठोर निर्भरता }

createUser(name) { this.logger.log(`उपयोगकर्ता बनाया गया: ${name}`); // उपयोगकर्ता बनाने की तर्क }}

const service = new UserService();service.createUser('अन्ना');


यहाँ UserService स्वयं Logger का एक इंस्टेंस बनाता है। यदि हम console.log को फ़ाइल या डेटाबेस में लिखने से बदलना चाहते हैं, तो हमें UserService का कोड बदलना होगा। यह SOLID के ओपन/क्लोज्ड सिद्धांत (Open/Closed Principle) का उल्लंघन करता है।



जावास्क्रिप्ट में डिपेंडेंसी इंजेक्शन के मूल सिद्धांत



डिपेंडेंसी इंजेक्शन क्या है?



डिपेंडेंसी इंजेक्शन (DI) एक डिज़ाइन पैटर्न है जिसमें कोई ऑब्जेक्ट अपनी निर्भरताएँ स्वयं बनाने के बजाय बाहरी स्रोत से प्राप्त करता है। जावास्क्रिप्ट के संदर्भ में, इसका अर्थ है कंस्ट्रक्टर, सेटर या मेथड पैरामीटर के माध्यम से निर्भरताएँ पास करना।



निर्भरताएँ इंजेक्ट करने के तीन मुख्य तरीके



जावास्क्रिप्ट और Node.js में तीन दृष्टिकोण लागू होते हैं:



  • कंस्ट्रक्टर इंजेक्शन: निर्भरताएँ क्लास के कंस्ट्रक्टर के माध्यम से पास की जाती हैं।
  • सेटर इंजेक्शन: निर्भरताएँ एक अलग विधि (सेटर) के माध्यम से सेट की जाती हैं।
  • मेथड इंजेक्शन: निर्भरताएँ सीधे उस विधि में पास की जाती हैं जो उनका उपयोग करती है।


सबसे लोकप्रिय और अनुशंसित कंस्ट्रक्टर इंजेक्शन है, क्योंकि यह निर्भरताओं को स्पष्ट और ऑब्जेक्ट बनने के बाद अपरिवर्तनीय बनाता है।



Node.js में डिपेंडेंसी इंजेक्शन के व्यावहारिक उदाहरण



उदाहरण 1: कंस्ट्रक्टर इंजेक्शन



आइए डिपेंडेंसी इंजेक्शन का उपयोग करके अपने उदाहरण को फिर से लिखें:



class Logger {    log(message) {        console.log(`[LOG]: ${message}`);    }}

class FileLogger { log(message) { // फ़ाइल में लिखने का अनुकरण console.log(`[FILE]: ${message}`); }}

class UserService { constructor(logger) { this.logger = logger; // निर्भरता बाहर से पास की गई }

createUser(name) { this.logger.log(`उपयोगकर्ता बनाया गया: ${name}`); // उपयोगकर्ता बनाने की तर्क }}

// विभिन्न लॉगर्स के साथ उपयोगconst consoleLogger = new Logger();const fileLogger = new FileLogger();

const serviceWithConsole = new UserService(consoleLogger);serviceWithConsole.createUser('अन्ना'); // [LOG]: उपयोगकर्ता बनाया गया: अन्ना

const serviceWithFile = new UserService(fileLogger);serviceWithFile.createUser('इवान'); // [FILE]: उपयोगकर्ता बनाया गया: इवान


अब UserService को यह नहीं पता कि कौन सा लॉगर उपयोग किया जा रहा है। हम

ब्लॉग

पुस्तक अनुशंसाएँ