इस ट्यूटोरियल में, आप सीखेंगे
- Node.js में फाइलस्ट्रीम
- Node.js में पाइप
- घटनाएँ Node.js में
- घटनाओं का उत्सर्जन
Node.js में फाइलस्ट्रीम
नोड डेटा स्ट्रीम तंत्र के रूप में धाराओं का व्यापक उपयोग करता है।
उदाहरण के लिए, जब आप कंसोल.लॉग फ़ंक्शन का उपयोग करके कंसोल में कुछ भी आउटपुट करते हैं, तो आप वास्तव में कंसोल को डेटा भेजने के लिए एक स्ट्रीम का उपयोग कर रहे हैं।
Node.js में फ़ाइलों से डेटा स्ट्रीम करने की क्षमता भी है ताकि उन्हें उचित रूप से पढ़ा और लिखा जा सके। अब हम एक उदाहरण देखेंगे कि हम फ़ाइलों से पढ़ने और लिखने के लिए धाराओं का उपयोग कैसे कर सकते हैं। हमें इस उदाहरण के लिए नीचे दिए गए चरणों का पालन करने की आवश्यकता है
स्टेप 1) data.txt नामक एक फाइल बनाएं जिसमें नीचे डेटा हो। मान लें कि यह फ़ाइल हमारे स्थानीय मशीन के डी ड्राइव पर संग्रहीत है।
Node.js पर ट्यूटोरियल
परिचय
आयोजन
जेनरेटर
डेटा कनेक्टिविटी
चमेली का उपयोग करना
चरण 2) प्रासंगिक कोड लिखें जो फ़ाइल से डेटा पढ़ने के लिए धाराओं का उपयोग करेगा।
var fs = require("fs");var stream;stream = fs.createReadStream("D://data.txt");stream.on("data", function(data) {var chunk = data.toString();console.log(chunk);});
कोड स्पष्टीकरण: -
- हमें पहले 'fs' मॉड्यूल्स को शामिल करने की आवश्यकता है, जिसमें स्ट्रीम बनाने के लिए आवश्यक सभी कार्यक्षमता शामिल है।
- आगे हम विधि का उपयोग करके एक पठनीय स्ट्रीम बनाते हैं - createReadStream। एक इनपुट के रूप में, हम अपनी data.txt फ़ाइल का स्थान देते हैं।
- स्टीम.ऑन फ़ंक्शन एक ईवेंट हैंडलर है और इसमें हम पहले पैरामीटर को 'डेटा' के रूप में निर्दिष्ट कर रहे हैं। इसका मतलब है कि जब भी फ़ाइल से डेटा स्ट्रीम में आता है, तो कॉलबैक फ़ंक्शन निष्पादित करें। हमारे मामले में, हम एक कॉलबैक फ़ंक्शन को परिभाषित कर रहे हैं जो 2 बुनियादी चरणों को पूरा करेगा। पहला यह है कि फ़ाइल से पढ़े गए डेटा को एक स्ट्रिंग के रूप में परिवर्तित करें। दूसरा परिवर्तित स्ट्रिंग को कंसोल में आउटपुट के रूप में भेजने के लिए होगा।
- हम डेटा का प्रत्येक हिस्सा ले रहे हैं जो डेटा स्ट्रीम से पढ़ा जाता है और इसे एक स्ट्रिंग में परिवर्तित करता है।
- अंत में, हम कंसोल में प्रत्येक स्ट्रिंग परिवर्तित चंक का आउटपुट भेज रहे हैं।
आउटपुट:
- यदि कोड ठीक से निष्पादित किया गया है, तो आप कंसोल में उपरोक्त आउटपुट देखेंगे। यह आउटपुट डेटाटेक्स्ट फ़ाइल के समान ही होगा।
एक फ़ाइल के लिए लेखन
उसी तरह, कि हम एक रीड स्ट्रीम बनाते हैं, हम किसी फाइल में डेटा लिखने के लिए राइट स्ट्रीम भी बना सकते हैं। चलिए सबसे पहले एक खाली फाइल बनाते हैं जिसमें data.txt नाम का कोई कंटेंट नहीं है। मान लेते हैं कि यह फ़ाइल हमारे कंप्यूटर के D ड्राइव में रखी गई है।
नीचे दिए गए कोड से पता चलता है कि हम फ़ाइल में डेटा कैसे लिख सकते हैं।
var fs = require("fs");var stream;stream = fs.createWriteStream("D://data.txt");stream.write("Tutorial on Node.js")stream.write("Introduction")stream.write("Events")stream.write("Generators")stream.write("Data Connectivity")stream.write("Using Jasmine")
कोड स्पष्टीकरण: -
- हम विधि का उपयोग करके एक लिखने योग्य स्ट्रीम बना रहे हैं - createWriteStream। एक इनपुट के रूप में, हम अपनी data.txt फ़ाइल का स्थान देते हैं।
- इसके बाद हमने अपनी पाठ फ़ाइल में पाठ की विभिन्न पंक्तियों को लिखने के लिए एक स्ट्रीम स्ट्रीम लिखी। स्ट्रीम इस डेटा को data.txt फ़ाइल में लिखने का ध्यान रखेगी।
यदि आप data.txt फ़ाइल को खोलते हैं, तो अब आपको फ़ाइल में निम्न डेटा दिखाई देगा
Node.js पर ट्यूटोरियल
परिचय
आयोजन
जेनरेटर
डेटा कनेक्टिविटी
चमेली का उपयोग करना
Node.js में पाइप
नोड अनुप्रयोगों के भीतर, धाराओं को पाइप () विधि का उपयोग करके एक साथ पाइप किया जा सकता है, जिसमें दो तर्क होते हैं:
- एक आवश्यक लेखकीय स्ट्रीम जो डेटा के लिए गंतव्य के रूप में कार्य करती है और
- एक वैकल्पिक वस्तु विकल्प में पारित करने के लिए इस्तेमाल किया।
पाइप का उपयोग करने का एक विशिष्ट उदाहरण, यदि आप एक फ़ाइल से दूसरे में डेटा स्थानांतरित करना चाहते हैं।
तो आइए एक उदाहरण देखते हैं कि हम पाइप का उपयोग करके एक फ़ाइल से दूसरे डेटा को कैसे स्थानांतरित कर सकते हैं।
चरण 1) एक फाइल बनाएं जिसका नाम है डेटेनपुट.टेक्स्ट जिसमें नीचे डेटा है। मान लें कि यह फ़ाइल हमारे स्थानीय मशीन के डी ड्राइव पर संग्रहीत है।
Node.js पर ट्यूटोरियल
परिचय
आयोजन
जेनरेटर
डेटा कनेक्टिविटी
चमेली का उपयोग करना
चरण 2) dataOutput.txt नामक एक खाली खाली फ़ाइल बनाएं और इसे अपने स्थानीय मशीन के D ड्राइव पर रखें।
चरण 3) डेटा के हस्तांतरण को डेटाऑनटपुट। टेक्स फ़ाइल से डेटा ट्रांसफर करने के लिए नीचे दिया गया कोड लिखें।
var fs = require("fs");var readStream = fs.createReadStream("D://datainput.txt");var writeStream = fs.createWriteStream("D://dataOutput.txt");readStream.pipe(writeStream);
कोड स्पष्टीकरण: -
- हम पहली बार अपनी datainput.txt फ़ाइल में एक "रीडस्ट्रीम" बना रहे हैं जिसमें हमारा सारा डेटा है जिसे नई फ़ाइल में स्थानांतरित करने की आवश्यकता है।
- फिर हमें अपनी dataOutput.txt फाइल में एक "रिट्रीटस्ट्रीम" बनाने की जरूरत है, जो कि हमारी खाली फाइल है और datainput.txt फाइल से डाटा ट्रांसफर करने के लिए डेस्टिनेशन है।
- हम फिर रीड स्ट्रीम से डेटा को स्ट्रीम स्ट्रीम में स्थानांतरित करने के लिए पाइप कमांड का उपयोग करते हैं। पाइप कमांड सभी डेटा ले जाएगा जो रीडस्ट्रीम में आता है, और इसे राइटस्ट्रीम में धकेल दें।
यदि आप अब dataOutput.txt फाइल को खोलते हैं, तो आपको वह सभी डेटा दिखाई देगा जो datainput.txt फाइल में मौजूद था।
घटनाएँ Node.js में
इवेंट्स Node.js और कभी-कभी Node.js में महत्वपूर्ण अवधारणाओं में से एक हैं, जिन्हें इवेंट-संचालित फ्रेमवर्क के रूप में संदर्भित किया जाता है।
मूल रूप से, एक घटना कुछ ऐसा होता है। उदाहरण के लिए, यदि किसी डेटाबेस में एक कनेक्शन स्थापित किया जाता है, तो डेटाबेस कनेक्शन इवेंट ट्रिगर होता है। इवेंट संचालित प्रोग्रामिंग उन कार्यों को बनाने के लिए है जो विशिष्ट घटनाओं को ट्रिगर करने पर ट्रिगर हो जाएंगे।
आइए Node.js. में किसी घटना को परिभाषित करने के एक मूल उदाहरण को देखें।
हम 'data_received' नामक एक घटना बनाने जा रहे हैं। जब यह घटना चालू हो जाती है, तो पाठ "डेटा प्राप्त" कंसोल को भेजा जाएगा।
var events = require('events');var eventEmitter = new events.EventEmitter();eventEmitter.on('data_received', function() {console.log('data received succesfully.');});eventEmitter.emit('data_received');
कोड स्पष्टीकरण: -
- 'इवेंट' मॉड्यूल को शामिल करने के लिए आवश्यकता फ़ंक्शन का उपयोग करें। इस मॉड्यूल के साथ, आप Node.js. में ईवेंट बना पाएंगे
- एक नया ईवेंट बनाएं। यह ईवेंट को बांधने के लिए उपयोग किया जाता है, जो हमारे मामले में कॉलबैक फ़ंक्शन के लिए "data_received" है जो चरण 3 में परिभाषित है।
- हम एक ईवेंट-संचालित फ़ंक्शन को परिभाषित करते हैं जो कहता है कि यदि "data_received" ईवेंट चालू हो जाता है, तो हमें कंसोल को टेक्स्ट "data_received" आउटपुट देना चाहिए।
- अंत में, हमारे पास eventEmiter.emit फ़ंक्शन का उपयोग करके हमारे इवेंट का मैन्युअल ट्रिगर है। यह data_received ईवेंट को ट्रिगर करेगा।
जब कार्यक्रम चलाया जाता है, तो पाठ "प्राप्त डेटा" कंसोल पर भेजा जाएगा जैसा कि नीचे दिखाया गया है।
घटनाओं का उत्सर्जन
घटनाओं को परिभाषित करते समय, घटनाओं के लिए अलग-अलग तरीके होते हैं जिन्हें लागू किया जा सकता है। यह विषय उनमें से प्रत्येक को विस्तार से देखने पर केंद्रित है।
- वन टाइम इवेंट हैंडलर
कभी-कभी किसी घटना पर प्रतिक्रिया देने में आपकी रुचि हो सकती है जब यह पहली बार होता है। इन स्थितियों में, आप एक बार () विधि का उपयोग कर सकते हैं।
आइए देखें कि हम ईवेंट हैंडलर के लिए एक बार विधि का उपयोग कैसे कर सकते हैं।
कोड स्पष्टीकरण: -
- यहां हम यह कहने के लिए 'एक बार' विधि का उपयोग कर रहे हैं कि घटना के लिए 'data_received,' कॉलबैक फ़ंक्शन को केवल एक बार निष्पादित किया जाना चाहिए।
- यहां हम मैन्युअल रूप से 'data_received' इवेंट शुरू कर रहे हैं।
- जब इस बार 'data_received' घटना फिर से शुरू हो जाती है, तो कुछ भी नहीं होगा। यह पहला कदम है क्योंकि हमने कहा कि घटना केवल एक बार शुरू हो सकती है।
यदि कोड ठीक से निष्पादित किया गया है, तो लॉग में आउटपुट 'data_received सफलतापूर्वक' होगा। यह संदेश केवल एक बार कंसोल में दिखाई देगा।
- इवेंट श्रोताओं का निरीक्षण
अपने जीवनकाल के किसी भी समय, एक घटना एमिटर में शून्य या इससे अधिक श्रोता हो सकते हैं। प्रत्येक घटना प्रकार के श्रोताओं का निरीक्षण कई तरीकों से किया जा सकता है।
यदि आप केवल संलग्न श्रोताओं की संख्या निर्धारित करने में रुचि रखते हैं, तो EventEmitter.listenerCount () विधि से आगे नहीं देखें।
( नोट: श्रोता महत्वपूर्ण हैं क्योंकि मुख्य कार्यक्रम को यह पता होना चाहिए कि क्या किसी कार्यक्रम में श्रोताओं को मक्खी पर जोड़ा जा रहा है, अन्यथा कार्यक्रम में खराबी होगी क्योंकि अतिरिक्त श्रोताओं को बुलाया जाएगा।)
कोड स्पष्टीकरण: -
- हम एक ईवेंटइमर प्रकार को परिभाषित कर रहे हैं, जो ईवेंट-संबंधित विधियों का उपयोग करने के लिए आवश्यक है।
- हम तब एमिटर नामक एक वस्तु को परिभाषित कर रहे हैं जिसका उपयोग हमारे ईवेंट हैंडलर को परिभाषित करने के लिए किया जाएगा।
- हम 2 ईवेंट हैंडलर बना रहे हैं जो मूल रूप से कुछ नहीं करते हैं। यह हमारे उदाहरण के लिए केवल यह दिखाने के लिए सरल रखा जाता है कि श्रोता कैसे काम करता है।
- अब जब आप हमारे data_received ईवेंट पर श्रोता कॉउंटर विधि का आह्वान करते हैं, तो यह कंसोल लॉग में इस ईवेंट से जुड़े इवेंट श्रोताओं की संख्या भेज देगा।
यदि कोड ठीक से निष्पादित किया गया है, तो 2 का मान कंसोल लॉग में दिखाया जाएगा।
- NewListener ईवेंट
जब भी कोई नया ईवेंट हैंडलर पंजीकृत होता है, ईवेंट एमिटर एक न्यूलीस्टनर ईवेंट का उत्सर्जन करता है। इस ईवेंट का उपयोग नए ईवेंट हैंडलर्स का पता लगाने के लिए किया जाता है। जब आप संसाधनों को आवंटित करने या प्रत्येक नए ईवेंट हैंडलर के लिए कुछ क्रिया करने की आवश्यकता होती है, तो आप आमतौर पर newListener ईवेंट का उपयोग करते हैं।
var events = require('events');var eventEmitter = events.EventEmitter;var emitter = new eventEmitter();emitter.on("newListener", function(eventName, listener) {console.log("Added listener for " + eventName + " events");});emitter.on('data_received', function() {});emitter.on('data_received', function() {});
कोड स्पष्टीकरण: -
- हम 'newListener' इवेंट के लिए एक नया ईवेंट हैंडलर बना रहे हैं। इसलिए जब भी कोई नया ईवेंट हैंडलर पंजीकृत होता है, तो "+ के लिए जोड़ा गया श्रोता" इवेंट नाम कंसोल में प्रदर्शित होगा।
- यहां हम कंसोल को लिख रहे हैं "पंजीकृत श्रोता के लिए" + प्रत्येक ईवेंट के लिए ईवेंट का नाम।
- हम अपने इवेंट 'data_received' के लिए 2 ईवेंट हैंडलर को परिभाषित कर रहे हैं।
यदि उपरोक्त कोड ठीक से निष्पादित किया गया है, तो नीचे दिया गया पाठ कंसोल में दिखाया जाएगा। यह सिर्फ दिखाता है कि 'न्यू लस्टनर' इवेंट हैंडलर को दो बार ट्रिगर किया गया था।
Data_received घटनाओं के लिए श्रोता जोड़ा गया
Data_received घटनाओं के लिए श्रोता जोड़ा गया
सारांश
- इनपुट-आउटपुट डिवाइस से डेटा पढ़ने और लिखने के लिए Node.js में स्ट्रीम का उपयोग किया जाता है। Node.js फ़ाइलों के लिए पठनीय और लिखने योग्य स्ट्रीम बनाने के लिए 'fs' लाइब्रेरी का उपयोग करता है। इन स्ट्रीम का उपयोग फ़ाइलों से डेटा पढ़ने और लिखने के लिए किया जा सकता है।
- कई धाराओं को एक साथ जोड़ने के लिए पाइप का उपयोग किया जा सकता है। सबसे आम उदाहरण में से एक फ़ाइल से दूसरे में डेटा के हस्तांतरण के लिए रीड एंड राइट स्ट्रीम को एक साथ जोड़ना है।
- Node.js को अक्सर एक इवेंट संचालित फ्रेमवर्क के रूप में भी टैग किया जाता है, और Node.js. में घटनाओं को परिभाषित करना बहुत आसान है। कार्यों को परिभाषित किया जा सकता है जो इन घटनाओं का जवाब देते हैं।
- ईवेंट प्रमुख घटनाओं के जवाब के लिए तरीकों को भी उजागर करते हैं। उदाहरण के लिए, हमने एक बार () ईवेंट हैंडलर को देखा है जिसका उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि किसी कॉलबैक फ़ंक्शन को केवल एक बार निष्पादित किया जाता है जब कोई ईवेंट ट्रिगर होता है।