JavaScript में Event-driven आर्किटेक्चर: रिएक्टिव एप्लिकेशन कैसे लिखें

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

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

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

JavaScript में Event-driven आर्किटेक्चर: आपका कोड प्रतिक्रिया क्यों दे, इंतजार नहीं

\n\n

क्या आपने कभी सोचा है कि आधुनिक JavaScript इतनी तेज़ और लचीली क्यों काम करती है? इसका उत्तर एक शब्द में छिपा है — इवेंट्स। Event-driven आर्किटेक्चर (इवेंट-ओरिएंटेड आर्किटेक्चर) सिर्फ एक फैशनेबल शब्द नहीं है, बल्कि वह नींव है जिस पर ब्राउज़र, Node.js और लगभग सभी आधुनिक वेब एप्लिकेशन बने हैं।

\n\n

एक रेस्तरां की कल्पना करें: पारंपरिक कोड "एक-एक करके सेवा" की तरह काम करता है — वेटर ऑर्डर लेता है, रसोई में जाता है, खाना बनने तक इंतजार करता है, खाना लाता है, और उसके बाद ही अगली टेबल पर जाता है। Event-driven आर्किटेक्चर वह है जब वेटर ऑर्डर बांटता है, एक नंबर लगाता है, अगले ग्राहक के पास जाता है, और खाना तैयार होने पर "खुद आता है"। कुशल? निश्चित रूप से।

\n\n

इस लेख में हम समझेंगे कि JavaScript में इवेंट-ओरिएंटेड आर्किटेक्चर कैसे काम करता है, अपना खुद का EventEmitter लिखेंगे और वास्तविक उदाहरण देखेंगे जो आपके कोड को साफ और तेज़ बनाएंगे। चलिए शुरू करते हैं!

\n\n

Event-driven आर्किटेक्चर क्या है और इसकी आवश्यकता क्यों है?

\n\n

Event-driven आर्किटेक्चर (EDA) एक प्रोग्रामिंग प्रतिमान है जिसमें प्रोग्राम का निष्पादन प्रवाह इवेंट्स द्वारा निर्धारित होता है: उपयोगकर्ता क्रियाएँ, अन्य सेवाओं से संदेश, डेटा परिवर्तन या सिस्टम सिग्नल। स्थिति को लगातार "पूछताछ" करने के बजाय, हम इवेंट्स की सदस्यता लेते हैं और उन पर प्रतिक्रिया करते हैं।

\n\n

EDA के मुख्य घटक

\n
    \n
  • इवेंट (Event) — एक संकेत कि कुछ हुआ है (क्लिक, टाइमआउट, डेटा प्राप्त करना)।
  • \n
  • एमिटर (Emitter) — वह ऑब्जेक्ट जो इवेंट उत्पन्न करता है।
  • \n
  • श्रोता/हैंडलर (Listener/Handler) — वह फंक्शन जो इवेंट पर प्रतिक्रिया करता है।
  • \n
  • इवेंट चैनल — एमिटर से श्रोताओं तक इवेंट पहुँचाने की प्रणाली।
  • \n
\n\n

JavaScript में यह आर्किटेक्चर Observer पैटर्न (प्रेक्षक) और Node.js में बिल्ट-इन EventEmitter के माध्यम से लागू किया जाता है। ब्राउज़र भी DOM-इवेंट सिस्टम और addEventListener के माध्यम से EDA का उपयोग करते हैं।

\n\n

यह आपके कोड के लिए क्यों महत्वपूर्ण है?

\n
    \n
  • एसिंक्रोनसिटी: निष्पादन प्रवाह को ब्लॉक नहीं करता।
  • \n
  • ढीला युग्मन: घटक सीधे एक-दूसरे पर निर्भर नहीं होते।
  • \n
  • स्केलेबिलिटी: नए हैंडलर आसानी से जोड़े जा सकते हैं।
  • \n
  • स्पष्टता: कोड घोषणात्मक हो जाता है — "जब X हो, तो Y करो"।
  • \n
\n\n

Event-driven दृष्टिकोण की मूल बातें: DOM से Node.js तक

\n\n

आइए सबसे सरल चीज़ से शुरू करें — ब्राउज़र में इवेंट्स। जब भी आप button.addEventListener('click', handler) लिखते हैं, आप Event-driven आर्किटेक्चर का उपयोग कर रहे हैं। लेकिन यह सिर्फ हिमशैल का सिरा है।

\n\n

उदाहरण 1: ब्राउज़र में सरल इवेंट हैंडलिंग

\n
// क्लिक इवेंट की सदस्यता लेना\ndocument.getElementById('myButton').addEventListener('click', (event) => {\n    console.log('बटन दबाया गया!', event.target);\n});\n\n// अपना खुद का इवेंट उत्पन्न करना\nconst customEvent = new CustomEvent('userLogin', { \n    detail: { username: 'pythonlib_user' } \n});\ndocument.dispatchEvent(customEvent);\n\n// कस्टम इवेंट सुनना\ndocument.addEventListener('userLogin', (event) => {\n    console.log(`उपयोगकर्ता ${event.detail.username} सिस्टम में लॉग इन हुआ`);\n});
\n\n

ध्यान दें: हम फंक्शन को सीधे कॉल नहीं कर रहे हैं, बल्कि सिस्टम से कह रहे हैं: "जब यह इवेंट हो — तब यह करो"। यही Event-driven दृष्टिकोण का सार है।

\n\n

उदाहरण 2: Node.js में EventEmitter

\n

Node.js में बिल्ट-इन events मॉड्यूल है जो EventEmitter क्लास प्रदान करता है। यह कई लाइब्रेरीज़ और फ्रेमवर्क का दिल है।

\n\n
const EventEmitter = require('events');\n\n// एमिटर बनाना\nconst myEmitter = new EventEmitter();\n\n// 'data' इवेंट की सदस्यता लेना\nmyEmitter.on('data', (chunk                

ब्लॉग

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