मुझे तुम्हारा दर्द कैसा लग रहा है!
कई लोगों की तरह, मैंने Node.js के सार को प्राप्त करना कठिन पाया क्योंकि ज्यादातर लोग केवल नोड के उस भाग के बारे में लिखते / बात करते हैं जो उन्हें उपयोगी लगता है - और जो हिस्सा उन्हें दिलचस्प लगता है वह आमतौर पर इसके प्राथमिक के बजाय नोड का एक द्वितीयक लाभ है। उद्देश्य। मुझे कहना होगा कि मुझे लगता है कि यह कहना लोगों के लिए पागल है कि नोड सिर्फ एक जावास्क्रिप्ट रनटाइम है। नोड के जावास्क्रिप्ट का उपयोग - और V8 रनटाइम के इसके चयन - बस अंत का मतलब है , समस्या के लिए सबसे अच्छा उपकरण है जिसे नोड के डेवलपर्स हल करना चाहते थे।
नोड का प्राथमिक उद्देश्य किसी वेब ऐप में उपयोगकर्ता की घटनाओं के प्रबंधन को अधिक कुशल बनाना था। इसलिए नोड भारी हैएक वेब ऐप के बैक एंड पर उपयोग किया जाता है। इवेंट प्रबंधन मांग करता है कि इन उपयोगकर्ता ईवेंट के लिए सर्वर मशीन पर कुछ सुन रहा है। इसलिए प्रत्येक ईवेंट को उसके उपयुक्त हैंडलर स्क्रिप्ट को रूट करने के लिए एक http सर्वर सेट किया जाना चाहिए। नोड उपयोगकर्ता अनुरोधों के लिए समर्पित पोर्ट पर सुनने के लिए एक सर्वर को जल्दी से स्थापित करने के लिए एक रूपरेखा प्रदान करता है। नोड ईवेंट हैंडलिंग के लिए जावास्क्रिप्ट का उपयोग करता है क्योंकि जावास्क्रिप्ट में कॉलबैक फ़ंक्शन हैं: यह एक कार्य को निलंबित करने की अनुमति देता है जब तक कि एक आश्रित कार्य का परिणाम वापस नहीं किया जाता है। कई अन्य भाषाओं में यह सुविधा नहीं है और जो Google के V8 रनटाइम के रूप में एक दुभाषिया नहीं है। अधिकांश वेब डेवलपर्स जावास्क्रिप्ट को जानते हैं, इसलिए नोड के साथ कोई अतिरिक्त भाषा नहीं है। क्या अधिक है, कॉलबैक फ़ंक्शन होने से सभी उपयोगकर्ता कार्यों को एक ही थ्रेड पर रखने की अनुमति मिलती हैडेटाबेस या फ़ाइल सिस्टम तक पहुंच की मांग करने वाले कार्यों पर स्पष्ट रूप से अवरुद्ध किए बिना। और यह वह है जो भारी समवर्ती उपयोग के तहत नोड की बेहतर निष्पादन क्षमता की ओर जाता है - इसके विकास का प्राथमिक उद्देश्य।
नोड उपयोगकर्ताओं को जल्दी से बैक एंड कोड लिखने में मदद करने के लिए, नोड के डेवलपर्स ने नियमित कार्यों के लिए एक अंतर्निहित जेएस लाइब्रेरी (जैसे HTTP अनुरोध, स्ट्रिंग (डी) कोडिंग, स्ट्रीम आदि) से संबंधित और एनपीएम (नोड पैकेज मैनेजर) रिपोसिटरी दोनों का आयोजन किया। : यह एक खुला स्रोत है, विभिन्न मानक और कस्टम कार्यों के लिए स्क्रिप्ट संकुल का उपयोगकर्ता-अनुरक्षित सेट। सभी नोड प्रोजेक्ट्स एनपीएम पैकेजों को एनपीएम इंस्टॉल कमांड के माध्यम से एक प्रोजेक्ट में आयात करने की अनुमति देते हैं ।
नोड के माध्यम से नियंत्रित उपयोगकर्ता अनुरोध प्रमाणीकरण, डेटाबेस क्वेरी, सामग्री प्रबंधन (स्ट्रैपी सीएमएस), आदि जैसे वेब ऐप द्वारा आवश्यक चीजें होंगी। इन सभी को नोड पोर्ट पर भेजा जाएगा। (जहां डेटाबेस से प्राप्त डेटा का विश्लेषण करने में बहुत अधिक समय लगता है, इस प्रकार की प्रक्रिया को एक अलग थ्रेड पर रखा जाता है, ताकि यह उपयोगकर्ता के अनुरोधों को धीमा न कर सके।) अन्य प्रकार के उपयोगकर्ता अनुरोध, जैसे किसी अन्य वेबपेज को लोड करने के लिए। , डाउनलोड सीएसएस / जेएस / छवि फ़ाइलें, आदि, ब्राउज़र द्वारा डिफ़ॉल्ट रूप से सर्वर मशीन पर भेजा जाना जारी रहेगा, जहां वेब सर्वर प्रोग्राम (Apache, NGinx, आदि) उन्हें संभालेंगे।
तो, व्यवहार में , नोड मुख्य रूप से तेजी से सर्वर-निर्माण और इवेंट-हैंडलिंग के लिए एक रूपरेखा है, लेकिन एक जो वेब सर्वर प्रोग्राम के केवल कुछ कार्यों को बदलता है ।
नोड के अन्य गैर-बैकएंड उपयोग केवल V8 इंजन जैसे इसकी एक या अन्य विशेषताओं का शोषण करते हैं। उदाहरण के लिए, फ्रंटएंड बिल्ड टूल ग्रंट और गल्प एक बिल्ड स्क्रिप्ट को प्रोसेस करने के लिए Node.js का उपयोग करते हैं, जिसे SASS को CSS में बदलने के लिए कोडित किया जा सकता है, CSS / JS फाइल को छोटा किया जा सकता है, इमेज साइज / लोडिंग को ऑप्टिमाइज़ कर सकते हैं, आदि लेकिन इस तरह का काम वास्तव में है। सिर्फ नोड के उत्पाद के उपयोग से, इसके प्रमुख उपयोग से नहीं जो वेब अनुप्रयोगों के लिए कुशल बैकएंड प्रक्रिया बनाने के लिए है।