यह एक सर्वर है, हाँ।
एक नोड.जेएस वेब एप्लिकेशन एक पूर्ण-वेब वेब सर्वर है जैसे कि नग्नेक्स या अपाचे।
आप वास्तव में किसी अन्य वेब सर्वर का उपयोग किए बिना अपने नोड.जेएस एप्लिकेशन की सेवा कर सकते हैं। बस अपना कोड बदलें:
app = express();
http.createServer(app).listen(80);
वास्तव में, कुछ प्रोजेक्ट अन्य सर्वर (अपाचे सहित) के लिए फ्रंट-एंड लोड बैलेंसर के रूप में नोड.जेएस का उपयोग करते हैं ।
ध्यान दें कि नोड.जेएस ऐसा करने के लिए केवल विकास स्टैक नहीं है। गो, जावा और स्विफ्ट में वेब डेवलपमेंट फ्रेमवर्क भी ऐसा करते हैं।
क्यों?
शुरुआत में सीजीआई था। CGI ठीक था और ठीक काम किया। अपाचे को एक अनुरोध मिलेगा, यह पता लगाएं कि url को CGI ऐप को निष्पादित करने की आवश्यकता है, उस CGI ऐप को निष्पादित करें और डेटा को पर्यावरण चर के रूप में पास करें, स्टडआउट पढ़ें और डेटा को ब्राउज़र में वापस सेवा दें।
समस्या यह है कि यह धीमी है। यह ठीक है जब सीजीआई ऐप एक छोटा स्टेटिकली संकलित सी प्रोग्राम था लेकिन छोटे स्टैटिकली कम्पाइल सी प्रोग्राम्स का एक समूह बनाए रखना मुश्किल हो गया। इसलिए लोगों ने स्क्रिप्टिंग भाषाओं में लिखना शुरू कर दिया। फिर इसे बनाए रखना कठिन हो गया और लोगों ने ऑब्जेक्ट ओरिएंटेड MVC फ्रेमवर्क विकसित करना शुरू कर दिया। अब हमें परेशानी होने लगी - हर जगह सभी वर्गों को संकलित करना होगा और उन सभी वस्तुओं को बस कुछ HTML की सेवा के लिए बनाना होगा, भले ही सेवा करने के लिए कुछ भी गतिशील न हो (क्योंकि रूपरेखा को यह पता लगाने की आवश्यकता है कि सेवा करने के लिए कुछ भी गतिशील नहीं है)।
क्या होगा अगर हमें उन सभी वस्तुओं को हर अनुरोध बनाने की आवश्यकता नहीं है?
यही लोगों ने सोचा था। और उस समस्या को हल करने की कोशिश करने से लेकर कई रणनीतियां बनीं। जल्द से जल्द एक mod_php
अपाचे की तरह सीधे वेब सर्वर में दुभाषियों को एम्बेड करना था । संकलित कक्षाओं और वस्तुओं को वैश्विक चर में संग्रहीत किया जा सकता है और इसलिए कैश किया गया है। एक अन्य रणनीति पूर्व-संकलन करना था। और फिर भी एक अन्य रणनीति थी कि एप्लिकेशन को एक नियमित सर्वर प्रक्रिया के रूप में चलाया जाए और FastCGI जैसे कस्टम प्रोटोकॉल का उपयोग करके वेब सर्वर के साथ बात की जाए।
तब कुछ डेवलपर्स ने HTTP को अपने ऐप-> सर्वर प्रोटोकॉल के रूप में उपयोग करना शुरू किया। वास्तव में, ऐप एक HTTP सर्वर भी है। इसका लाभ यह है कि आपको किसी नए, संभवतः छोटी गाड़ी, संभवतः परीक्षण किए गए प्रोटोकॉल को लागू करने की आवश्यकता नहीं है और आप वेब ब्राउज़र (या आमतौर पर, curl
) का उपयोग करके सीधे अपने ऐप को डिबग कर सकते हैं । और आपको अपने ऐप का समर्थन करने के लिए एक संशोधित वेब सर्वर की आवश्यकता नहीं है, बस कोई भी वेब सर्वर जो रिवर्स प्रॉक्सी या रीडायरेक्ट कर सकता है।
Apache / Nginx का उपयोग क्यों करें?
जब आप एक नोड.जेएस ऐप नोट करते हैं, तो आप अपने स्वयं के वेब सर्वर के लेखक हैं। आपके ऐप का कोई भी संभावित बग इंटरनेट पर एक सीधा शोषक बग है। कुछ लोग (उचित रूप से) इसके साथ सहज नहीं हैं।
अपने नोड.जेएस ऐप के सामने अपाचे या नग्नेक्स की एक परत जोड़ने का मतलब है कि आपके ऐप के इंटरफ़ेस के रूप में लाइव इंटरनेट पर लड़ाई-परीक्षण, सुरक्षा-सख्त सॉफ़्टवेयर है। यह थोड़ा विलंबता (रिवर्स प्रॉक्सिंग) जोड़ता है, लेकिन अधिकांश इसे इसके लायक मानते हैं।
यह नोड के शुरुआती दिनों में मानक सलाह हुआ करता था ।js. लेकिन इन दिनों ऐसी साइटें और वेब सेवाएं भी हैं जो इंटरनेट से नोड.जेएस को सीधे उजागर करती हैं। http.Server
मॉड्यूल अब काफी अच्छी तरह से लड़ाई-परीक्षण इंटरनेट पर भरोसा किया जा रहा है।
Isn't it true that a Node.js based server (i.e. code) will still be placed within something like Nginx to run?
नहीं, यह गलत है