नोड की शक्तिशाली घटना-संचालित वास्तुकला इसके सबसे मजबूत फायदों में से एक है।

चाबी छीनना

  • इवेंट-संचालित प्रोग्रामिंग इंटरैक्टिव ऐप्स, विशेष रूप से जीयूआई ऐप्स के लिए एक अच्छा विकल्प है, क्योंकि यह कोड को किसी भी क्रम में उपयोगकर्ता की गतिविधियों पर प्रतिक्रिया देने की अनुमति देता है।
  • इवेंट-संचालित प्रोग्रामिंग का उपयोग आमतौर पर वेब ऐप्स में किया जाता है, जहां जब उपयोगकर्ता DOM के साथ इंटरैक्ट करते हैं तो इवेंट श्रोता ट्रिगर हो जाते हैं।
  • इवेंटएमिटर क्लास के साथ Node.js में इवेंट-संचालित प्रोग्रामिंग को लागू करना आसान है, जो आपको कस्टम इवेंट बनाने और उन्हें संभालने के लिए इवेंट श्रोताओं को संलग्न करने की अनुमति देता है।

किसी भी सॉफ़्टवेयर एप्लिकेशन का निर्माण करते समय, एक महत्वपूर्ण निर्णय में आपके कोड के लिए उपयुक्त प्रतिमान का चयन करना शामिल होता है।

इवेंट-संचालित प्रोग्रामिंग इंटरैक्टिव ऐप्स के लिए एक अच्छा विकल्प है जो किसी भी क्रम में होने वाली उपयोगकर्ता गतिविधियों पर प्रतिक्रिया देता है। यह कमांड-लाइन प्रोग्राम या एम्बेडेड सिस्टम कोड की तुलना में जीयूआई ऐप्स के साथ अधिक लोकप्रिय प्रतिमान है।

instagram viewer

घटनाएँ क्या हैं?

आप किसी घटना को एक ऐसी क्रिया या घटना के रूप में सोच सकते हैं जिसे आपका कोड पहचान सकता है और उस पर प्रतिक्रिया दे सकता है। सिस्टम या उपयोगकर्ता किसी ईवेंट को ट्रिगर कर सकता है और आपका कोड आमतौर पर इसे संभालने के लिए एक फ़ंक्शन पंजीकृत करेगा।

किसी मूल घटना का एक उदाहरण किसी विशेष क्रिया को करने के लिए एक बटन पर क्लिक करना है। बटन पर क्लिक करने की क्रिया एक घटना को सक्रिय करती है, और क्लिक होने पर चलने वाले फ़ंक्शन को कहा जाता है घटना श्रोता (या हैंडलर)।

इवेंट-संचालित प्रोग्रामिंग क्या है?

इवेंट-संचालित प्रोग्रामिंग एक है प्रोग्रामिंग प्रतिमान जिसमें किसी एप्लिकेशन का निष्पादन प्रवाह कड़ाई से अनुक्रमिक होने के बजाय घटित होने वाली घटनाओं पर निर्भर करता है।

इस प्रतिमान का उपयोग अधिकतर उपयोगकर्ता इंटरफ़ेस और वास्तविक समय अनुप्रयोगों का निर्माण करते समय किया जाता है, जहां उपयोगकर्ता की कार्रवाई जैसी घटना को सिस्टम में एक कार्रवाई को ट्रिगर करना चाहिए।

वेब ऐप्स बनाते समय यह प्रतिमान बहुत लोकप्रिय है, जहां उपयोगकर्ताओं के साथ बातचीत करने पर इवेंट श्रोता ट्रिगर होते हैं दस्तावेज़ ऑब्जेक्ट मॉडल (DOM).

निम्नलिखित छवि दर्शाती है कि इवेंट-संचालित प्रोग्रामिंग में प्रवाह कैसे काम करता है। जब कोई घटना घटती है, तो इवेंट चैनल इसे प्राप्त करता है और इसे संभालने के लिए उपयुक्त श्रोता को भेजता है:

Node.js में इवेंट-संचालित प्रोग्रामिंग

जावास्क्रिप्ट इवेंट लूप Node.js रनटाइम की अतुल्यकालिक प्रकृति के पीछे मूलभूत अवधारणाओं में से एक है। एक इवेंट-संचालित आर्किटेक्चर इसके बिल्ट-इन का उपयोग करता है इवेंटएमिटर निर्बाध निष्पादन प्रवाह को सुविधाजनक बनाने के लिए मॉड्यूल।

इवेंट-संचालित प्रोग्रामिंग के साथ, Node.js आपको सर्वर-साइड एप्लिकेशन बनाने की सुविधा देता है जो उपयोगकर्ता इंटरैक्शन, I/O संचालन और वास्तविक समय डेटा प्रोसेसिंग को संभाल सकता है। यह गैर-अवरुद्ध तरीके से होता है, जिसके परिणामस्वरूप बेहतर प्रदर्शन होता है और उपयोगकर्ता को बेहतर अनुभव मिलता है।

जब आप इवेंट को परिभाषित करने, ट्रिगर करने और प्रबंधित करने की मूल बातें समझते हैं तो Node.js में इवेंट-संचालित प्रोग्रामिंग को लागू करना आसान होता है।

इवेंटएमिटर क्लास

साथ इवेंटएमिटर Node.js में क्लास, आप कस्टम ईवेंट बना सकते हैं और उन्हें संभालने के लिए ईवेंट श्रोताओं को संलग्न कर सकते हैं। अपने कोड में क्लास का उपयोग करने के लिए, इसे यहां से आयात करें आयोजन मॉड्यूल इस प्रकार:

// CommonJS
const { EventEmitter } = require("events")

// ES6
import { EventEmitter } from"events"

क्लास और उसके सदस्य फ़ंक्शन आपके एप्लिकेशन में उपयोग के लिए उपलब्ध हैं। घटनाओं का उत्सर्जन और प्रबंधन शुरू करने के लिए, इसका एक नया उदाहरण प्रारंभ करें इवेंटएमिटर कक्षा।

उदाहरण के लिए:

const FoodEvents = new EventEmitter()

यह एक नया उत्सर्जक ऑब्जेक्ट बनाता है जिसे कहा जाता है खाद्य कार्यक्रम जो घटनाओं को उत्सर्जित कर सकता है और श्रोताओं को पंजीकृत कर सकता है। इवेंटएमिटर क्लास किसी इवेंट को सुनने के लिए तीन तरीके प्रदान करता है: पर, श्रोता जोड़ें, और एक बार.

पर ईवेंट श्रोताओं को जोड़ने के लिए विधि सबसे बुनियादी कार्य है, और addListener बिल्कुल उसी तरह से काम करता है. वे दोनों इवेंट नाम और कॉलबैक फ़ंक्शन को तर्क के रूप में स्वीकार करते हैं। कॉलबैक वास्तविक हैंडलर फ़ंक्शन है। आप उपयोग कर सकते हैं पर और addListener परस्पर विनिमयपूर्वक।

यहां बताया गया है कि आप इसका उपयोग करके किसी ईवेंट को कैसे प्रबंधित करते हैं पर तरीका:

FoodEvents.on("cookie_ready", (data) => {
console.log("Cookie ready for packaging, data received: ", data);
})

का उपयोग करते हुए addListener के लिए एक प्रत्यक्ष विकल्प के रूप में पर:

FoodEvents.addListener("cookie_ready", (data) => {
console.log(
"Cookie will now be packaged and sent out, data received: ",
data
);
})

ये दोनों उदाहरण ईवेंट श्रोताओं की सरणी में कॉलबैक जोड़ देंगे कुकी_तैयार आयोजन। यदि आप दोनों का उपयोग करते हैं, तो उनके कॉलबैक क्रम में सक्रिय हो जाएंगे।

एक बार विधि एक बार के ईवेंट श्रोता को पंजीकृत करती है जो अगली बार ईवेंट सक्रिय होने पर चलता है। उसके बाद, सिस्टम इसे श्रोताओं की श्रृंखला से हटा देगा।

यहां उपयोग करने का तरीका बताया गया है एक बार एक बार की घटना को संभालने के लिए:

FoodEvents.once("cookie_sent", (data) => {
console.log("Cookie is sent out, data received: ", data);
})

इस मामले में, उत्सर्जक केवल सुनेगा कुकी_भेजी गई एक बार ईवेंट करें और चलने के बाद हैंडलर को हटा दें।

सभी तीन विधियाँ एमिटर लौटाती हैं, ताकि आप उनमें से किसी एक पर चेन कॉल कर सकें।

यह मत भूलिए कि श्रोता के लिए किसी ईवेंट को संभालने के लिए, एप्लिकेशन को किसी बिंदु पर उस ईवेंट को प्रसारित करना होगा। उत्सर्जित करने के लिए यहां कुछ नमूना कोड दिया गया है कुकी_तैयार घटना का उपयोग कर फेंकना तरीका:

functionbakeCookie() {
console.log("Cookie is baking, almost ready...")

setTimeout(() => {
FoodEvents.emit("cookie_ready", { flavor: "vanilla cookie" })
}, 3000)
}

bakeCookie()

जब आप इस कोड को चलाते हैं जो कंसोल में एक नोटिस प्रिंट करता है कि कुकी बेक हो रही है, 3 सेकंड तक प्रतीक्षा करता है, और उत्सर्जित करता है कुकी_तैयार घटना, आपको नीचे दी गई छवि जैसा आउटपुट मिलेगा:

यह दर्शाता है कि ईवेंट श्रोता आपके द्वारा उन्हें पंजीकृत करने के क्रम में कैसे चलते हैं।

इवेंटएमिटर कक्षा अधिक विधियाँ प्रदान करती है, जिनमें शामिल हैं:

  • श्रोता हटाएँ: इवेंट श्रोताओं की श्रृंखला से श्रोता का एक उदाहरण हटा देता है। बंद इस प्रयोजन हेतु विधि भी उपलब्ध है।
  • prependListener: यह विधि श्रोता को भी पंजीकृत करती है, लेकिन इसे श्रोता सरणी के अंत में जोड़ने के बजाय, इसे शुरुआत में जोड़ती है। फिर यह आपके द्वारा पहले से पंजीकृत किसी भी अन्य श्रोता से पहले चलेगा।
  • PrependOnceListener: यह प्रीपेन्डलिस्टनर की तरह ही काम करता है, लेकिन श्रोता केवल एक बार चलता है, जैसा कि मामले में होता है एक बार.
  • सभी श्रोताओं को हटा दें: यह फ़ंक्शन किसी विशिष्ट नामित ईवेंट के लिए सभी पंजीकृत श्रोताओं को हटा देता है, या यदि आप इसमें कोई तर्क नहीं देते हैं तो सभी श्रोताओं को हटा देता है।
  • श्रोताओं: आपके द्वारा तर्क के रूप में पास किए गए ईवेंट नाम के श्रोताओं की एक श्रृंखला लौटाता है।
  • घटना नाम: आप इस फ़ंक्शन का उपयोग उन सभी ईवेंट नामों को प्राप्त करने के लिए कर सकते हैं जिनके लिए आपने पहले ही एक श्रोता को पंजीकृत कर लिया है।
  • setMaxListeners: जब आप मेमोरी लीक को रोकने के लिए किसी इवेंट के लिए 10 से अधिक श्रोताओं को पंजीकृत करते हैं तो Node.js डिफ़ॉल्ट रूप से एक चेतावनी देता है। आप setMaxListeners का उपयोग करके इस डिफ़ॉल्ट मान को समायोजित कर सकते हैं। आप इस मान का उपयोग करके भी जांच सकते हैं getMaxListeners.

आयोजन पैकेज Node.js में इवेंट-संचालित प्रोग्रामिंग के लिए व्यापक कार्यक्षमता प्रदान करता है।

कुछ इवेंट-संचालित प्रोग्रामिंग सर्वोत्तम प्रथाएँ क्या हैं?

प्रत्येक प्रोग्रामिंग दृष्टिकोण के अपने फायदे हैं, और सर्वोत्तम प्रथाओं की अनदेखी करने से आपके एप्लिकेशन पर प्रतिकूल प्रभाव पड़ सकता है। इवेंट-संचालित एप्लिकेशन बनाते समय विचार करने के लिए निम्नलिखित कुछ सर्वोत्तम अभ्यास हैं:

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

सही आर्किटेक्चर के साथ एप्लिकेशन बनाएं

बिल्डिंग सॉफ़्टवेयर पर लागू होने वाला एक सामान्य नियम उचित वास्तुकला और डिज़ाइन निर्णय लेना है। जब आप किसी एप्लिकेशन के निर्माण के लिए गलत दृष्टिकोण अपनाते हैं, तो अंततः आपको परिणाम भुगतने होंगे।

इवेंट-संचालित प्रोग्रामिंग एक प्रतिमान है जो किसी एप्लिकेशन की वास्तुकला और प्रदर्शन पर महत्वपूर्ण प्रभाव डाल सकता है। जब भी आपका एप्लिकेशन, या उसका कोई भाग, कार्य करने के लिए ईवेंट पर निर्भर करता है, तो आपको ईवेंट-संचालित प्रोग्रामिंग पर विचार करना चाहिए।