मुखपृष्ठ » कोडिंग » Node.js (सर्वर-साइड जावास्क्रिप्ट) के लिए शुरुआती गाइड

    Node.js (सर्वर-साइड जावास्क्रिप्ट) के लिए शुरुआती गाइड

    Node.js - सरल शब्दों में - है सर्वर-साइड जावास्क्रिप्ट. इन दिनों इसकी खूब चर्चा हो रही है। यदि आपने इसके बारे में सुना है या आप इसे सीखने और इस पर कुछ हाथ लेने में रुचि रखते हैं - यह पोस्ट आपके लिए है.

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

    इसे और समझाने के लिए, हम इसके बारे में बात करेंगे Node.js क्या है कुछ के साथ प्रदाता के सुझाव और स्थापना युक्तियाँ होस्ट करना. जावास्क्रिप्ट, jQuery और अजाक्स के मध्यवर्ती स्तर के ज्ञान की आवश्यकता है, लेकिन हम आपको पूरी बात को आसानी से समझने और यहां तक ​​कि इस पर काम करने के लिए उदाहरण भी प्रदान करेंगे, तो चलिए Node.js के बारे में अधिक जानते हैं!

    आइए एक मामले पर विचार करें:

    एक वेबसाइट पर विचार करें जिसमें आपको किसी अन्य वेब सर्वर से गतिशील रूप से सामग्री लोड करने की आवश्यकता होती है जो धीमा है। PHP में आप इसे 2 तरीकों से कर सकते हैं - एक साधारण फ़ाइल में कोडिंग तथा इसे दूसरी स्क्रिप्ट के रूप में कोड करना, फिर एक बहुआयामी दृष्टिकोण में इसे क्रियान्वित करना.

    पहली विधि में भले ही कोड सरल हो निष्पादन थोड़ी देर के लिए रुक जाता है उस बिंदु पर जहां धीमा वेब सर्वर एक्सेस किया जाता है। दूसरी विधि है प्रदर्शन के मामले में अधिक अनुकूलित लेकिन यह कोड करना कठिन है और इसमें एक मल्टीथ्रेड प्रबंधन ओवरहेड है। मामला सर्वर-साइड जावास्क्रिप्ट के अलावा, यानी, नोड.जेएस के अलावा अधिकांश वेब प्रोग्रामिंग भाषाओं के लिए समान है.

    Node.js में क्या अंतर है? Node.js को समझने के लिए आपको ध्यान में रखना होगा ब्राउज़र में जावास्क्रिप्ट की घटना आधारित प्रोग्रामिंग. हम यहां उसी तकनीक का उपयोग करते हैं। एक अलग धागे का उपयोग करने के बजाय, ए फंक्शन को फिनिश इवेंट से जोड़ा जाता है का “धीमी गति से वेब सर्वर का उपयोग” ऊपर वर्णित है, इस प्रकार आप प्राप्त करते हैं पूर्ण कार्यक्षमता किसी भी मल्टीथ्रेड ओवरहेड के बिना ऊपर वर्णित अनुकूलित दूसरे विकल्प में.

    Node.js के साथ आरंभ करना

    Node.js जावास्क्रिप्ट है. हम क्लाइंट में एक सर्वर पर जावास्क्रिप्ट की घटना आधारित कार्यक्षमता का उपयोग क्यों नहीं कर सकते हैं? इस सोच से शायद Node.js का विकास हुआ.

    उस ने कहा, Node.js का मुख्य आकर्षण - यह ईवेंट-आधारित एसिंक्रोनस फ़ंक्शन है. यह एक का उपयोग करता है घटना पाश I / O संचालन के लिए प्रतीक्षा करने के बजाय (बाहरी वेब सेवा तक पहुँच, हार्डवेयर तक पहुँच).

    Node.js अभी भी हो सकता है इसकी प्रसंस्करण शक्ति का उपयोग करें जब सर्वर किसी अन्य ऑपरेशन की प्रतीक्षा कर रहा हो। यह Node.js बनाता है स्केलेबल लाखों समवर्ती कनेक्शन के लिए.

    एक सर्वर पर जावास्क्रिप्ट कैसे चलता है?

    Node.js v8 वातावरण पर काम करता है - यह एक है आभासी मशीन या ए जावास्क्रिप्ट इंजन जावास्क्रिप्ट कोड चलाता है, इसलिए होस्टिंग के लिए आप साधारण वेब होस्ट का उपयोग नहीं कर सकते। आपको उन लोगों की आवश्यकता होगी जिनके पास है v8 वातावरण.

    यहाँ Node.js होस्टिंग के लिए कुछ प्रदाता सुझाव दिए गए हैं:

    1. क्लाउड फाउंड्री
    2. Cloudnode
    3. DotCloud
    4. Duostack

    Node.js स्थापित करना

    नोड होगा Linux, Macintosh और Solaris ऑपरेटिंग सिस्टम पर पूरी तरह से काम करते हैं. विंडोज पर आप इसे सिग्विन इम्यूलेशन लेयर का उपयोग करके इंस्टॉल कर सकते हैं। विंडोज में कोई भी निर्माण संतोषजनक नहीं है लेकिन अभी भी कुछ चलाना संभव है.

    विकल्प 1: स्रोत से बिल्डिंग नोड.

    उपयोग बनाना नोड बनाने और स्थापित करने के लिए। js (कमांड लाइन पर निम्नलिखित निष्पादित करें). गिट आवश्यक है.

     git clone --depth 1 git: //github.com/joyent/node.git cd नोड git चेकआउट v0.4.11 एक्सपोर्ट JOBS = 2 mkdir ~ / local ./configure --prefix - $ HOME / लोकल / नोड मेक इनस्टॉल। गूंज 'निर्यात पाथ = $ गृह / स्थानीय / नोड / बिन: $ पाथ' >> ~ / .प्रोफाइल गूंज 'निर्यात NODE_PATH = $ गृह / स्थानीय / नोड: $ गृह / स्थानीय / नोड / देय / नोड_मॉड्यूल' >> ~ / .profile source ~ / .profile 

    विकल्प 2: पैकेज से Node.js स्थापित करना

    मैक उपयोगकर्ताओं के लिए, आप https://sites.google.com/site/nodejsmacosx/ से एक पैकेज के रूप में Node.js स्थापित कर सकते हैं, जो बहुत ही आत्म-व्याख्यात्मक है.

    परीक्षण नोड स्थापना

    आपके सफल नोड इंस्टॉलेशन की जाँच करने के लिए हम एक बहुत ही सरल कंसोल "हैलो वर्ल्ड" प्रोग्राम आज़मा सकते हैं। नामक एक फ़ाइल बनाएँ "test.js"और इसमें निम्न कोड लिखें.

     var sys = आवश्यकता ("sys"); sys.puts ("हैलो वर्ल्ड"); 

    कोड स्पष्टीकरण:

    यह लोड करता है sys एक चर में वर्ग sys. यह तब उपयोग करता है sys कंसोल कार्यों को करने के लिए ऑब्जेक्ट। sys.puts के समान एक कमांड है अदालत C ++ में, इसलिए ऊपर दी गई स्क्रिप्ट को चलाने के लिए कमांड प्रॉम्प्ट पर जाएं और नीचे दिए गए कमांड द्वारा इसे चलाएं:

     नोड परीक्षण। js 

    यदि आपकी स्थापना सफल होती है तो आपको स्क्रीन में एक हैलो वर्ल्ड आउटपुट मिलेगा.

    एक HTTP सर्वर बनाना

    अब यह Node.js. का उपयोग कर वेब सर्वर के माध्यम से "हैलो वर्ल्ड" बनाने का समय है यहाँ हम क्या करने जा रहे हैं - हम एक सर्वर बनाएँ जो आउटपुट देता है a “नमस्ते दुनिया” 8080 पोर्ट पर लोकलहोस्ट करने के लिए कोई फर्क नहीं पड़ता कि यूआरएल क्या है, आपको एक विचार दे रहा है घटना है.

    कोड:

     var sys = आवश्यकता ("sys"), my_http = आवश्यकता ("http"); my_http.createServer (फ़ंक्शन (अनुरोध, प्रतिक्रिया) sys.puts ("मुझे मिल गया"); response.writeHeader (200, "सामग्री-प्रकार": "पाठ / सादा"); response.write ("हैलो वर्ल्ड" "); response.end ();)) सुनो (8080); sys.puts ("सर्वर 8080 पर चल रहा है"); 

    कोड स्पष्टीकरण:

    Node.js में सबसे दिलचस्प हिस्सा इसकी घटना-आधारित प्रोग्रामिंग है। HTTP सर्वर बनाने के लिए हमें चाहिए HTTP लाइब्रेरी, इसलिए हम आगे बढ़ते हैं और इसका उपयोग करते हैं my_http. हम फ़ंक्शन द्वारा सर्वर बनाते हैं:

     my_http.createServer (समारोह (अनुरोध, प्रतिक्रिया) ) सुनने (8080)। 

    पहले तर्क के रूप में दिए गए फ़ंक्शन को निष्पादित किया जाता है पोर्ट 8080 में हर बार एक घटना शुरू हो जाती है, इसलिए फ़ंक्शन ही पोर्ट 8080 में किसी ईवेंट को सुनने के लिए नोड सुझाता है. इसका पता लगाने के लिए, मैंने एक जोड़ा है “मैं हड़बड़ा गया” संदेश जो अनुरोध प्राप्त होने पर कंसोल स्क्रीन पर प्रदर्शित किया जाएगा.

    निवेदन वस्तु समाहित है सर्वर से किए गए अनुरोध के बारे में सभी जानकारी. उदाहरण के लिए इसमें URL स्ट्रिंग है। प्रतिक्रिया वस्तु वह वस्तु है जो सर्वर से प्रतिक्रिया को संभालता है. पहले हम एक के रूप में प्रतिक्रिया का हेडर सेट करते हैं पाठ / सादे सामग्री, फिर आउटपुट “नमस्ते दुनिया“, फिर आउटपुट स्ट्रीम को समाप्त करें. 200 स्थिति प्रतिक्रिया है.

    वैसे, उपरोक्त एक बहुत ही सरल उदाहरण है, लेकिन हम देख सकते हैं कि जो भी URL हम ब्राउज़र में देते हैं उसी सर्वर के लिए हमें समान आउटपुट मिलता है। “नमस्ते दुनिया”.

    सरल स्थिर फ़ाइल सर्वर बनाना

    चलो अगले ट्यूटोरियल में एक साधारण स्टेटिक फाइल सर्वर बनाते हैं.

    कोड:

     var sys = आवश्यकता ("sys"), my_http = आवश्यकता ("http"), path = आवश्यकता ("पथ"), url = आवश्यकता ("url"), filesys = आवश्यकता ("fs"); my_http.createServer (फ़ंक्शन (अनुरोध, प्रतिक्रिया) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); path.exists (full_path, function (present) ) if (मौजूद!) response.writeHeader (404, "सामग्री-प्रकार": "पाठ / सादा"); response.write ("404 Not Found \ n"); response.end ();; filesys.readFile (full_path, "बाइनरी", फ़ंक्शन (इरेट, फ़ाइल) if (इरेज़) response.writeHeader (500, "सामग्री-प्रकार": "text / plain"); response .write (इरेट + "n"); response.end (); और response.writeHeader (200); response.write (फ़ाइल, "बाइनरी"); response.end ();;;)। सुनने (8080); sys.puts ("सर्वर 8080 पर चल रहा है"); 

    कोड स्पष्टीकरण:

    उपरोक्त कोड बहुत सरल है, हम इसे ब्लॉक के रूप में चर्चा करेंगे.

     var sys = आवश्यकता ("sys"), my_http = आवश्यकता ("http"), path = आवश्यकता ("पथ"), url = आवश्यकता ("url"), filesys = आवश्यकता ("fs"); 

    इन सभी पुस्तकालयों को कार्यक्रम के लिए आवश्यक है। इसका उपयोग निम्नलिखित कोड में स्पष्ट होगा.

     var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); 

    निवेदन ऑब्जेक्ट में अनुरोध विवरण है जैसा कि हमने पहले चर्चा की है। हम उपयोग करते हैं पार्स URL वर्ग का कार्य जिसे हमने शामिल करने के लिए शामिल किया है पथ नाम अनुरोध URL का। पाथनाम प्राप्त करने के बाद, हम फ़ाइल के पूर्ण पथ को प्राप्त करने के लिए इसे वर्तमान कार्य निर्देशिका के पथ के साथ समेटते हैं.

    URL से जुड़ने के लिए हमारे पास एक फंक्शन है जिसे कहा जाता है में शामिल होने के पथ पुस्तकालय में.

     path.exists (full_path, समारोह (मौजूद)  

    पूर्ण पथ प्राप्त करने के बाद हम जांचते हैं कि फ़ंक्शन द्वारा पथ मौजूद है या नहीं मौजूद. जाँच के बाद कॉलबैक फ़ंक्शन को कॉल किया जाता है और दूसरे तर्क के रूप में पारित किया जाता है.

     अगर (मौजूद है) response.writeHeader (404, "सामग्री-प्रकार": "पाठ / सादा"); response.write ("404 Not Found \ n"); response.end ();  और filesys.readFile (full_path, "बाइनरी", फ़ंक्शन (ग़लती, फ़ाइल) if (इरेज़) response.writeHeader (500, "सामग्री-प्रकार": "पाठ / सादा"); response .write ( तक + "\ n"); response.end (); और response.writeHeader (200); response.write (फ़ाइल, "बाइनरी"); response.end ();;  

    अब कॉलबैक फ़ंक्शन में यदि फ़ाइल मौजूद नहीं है तो हम "404 पृष्ठ नहीं मिला“त्रुटि.

    अगर पेज मिलता है तो हम फाइल को पढ़ते हैं readfile फ़ाइल सिस्टम में कार्य करता है। हम कॉलबैक फ़ंक्शन को भी देख सकते हैं readfile समारोह ही वहाँ परिभाषित किया। यदि फ़ाइल को पढ़ने में कोई त्रुटि नहीं है तो इसे प्रदर्शित किया जाएगा। यदि कोई त्रुटि है तो त्रुटि पाठ के साथ एक स्थिति 500 ​​दी जाती है.

    मैं एक फ़ंक्शन में पिछले ट्यूटोरियल के कोड रैपिंग की भी सलाह देता हूं ताकि आप इसे अगले ट्यूटोरियल में या भविष्य में उपयोग कर सकें.

     var sys = आवश्यकता ("sys"), my_http = आवश्यकता ("http"), path = आवश्यकता ("पथ"), url = आवश्यकता ("url"), filesys = आवश्यकता ("fs"); my_http.createServer (फ़ंक्शन (अनुरोध, प्रतिक्रिया) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); path.exists (full_path, function (present) ) if (मौजूद!) response.writeHeader (404, "सामग्री-प्रकार": "पाठ / सादा"); response.write ("404 Not Found \ n"); response.end ();; filesys.readFile (full_path, "बाइनरी", फ़ंक्शन (इरेट, फ़ाइल) if (इरेज़) response.writeHeader (500, "सामग्री-प्रकार": "text / plain"); response .write (इरेट + "n"); response.end (); और response.writeHeader (200); response.write (फ़ाइल, "बाइनरी"); response.end ();;); my_hitp createServer (फंक्शन (रिक्वेस्ट, रिस्पांस) var my_path = url.parse (request.url) .pathname; load_file (my_path, response);) सुनें (8080); sys.puts ("सर्वर 8080 पर चल रहा है")। 

    बने रहें !

    बस इतना ही। आशा है कि यह आपको Node.js. का एक अच्छा विचार देगा। अगले लेख में, मैं आपको दिखाऊंगा कि कैसे फेसबुक का लोड और डिस्प्ले नंबर Node.js का उपयोग करना पसंद करता है. बने रहें!

    संपादक की टिप्पणी: इस पोस्ट के द्वारा लिखा गया है जियो पॉल Hongkiat.com के लिए। जियो एक स्वतंत्र वेब / आईफोन डेवलपर है, जो PHP, Codeigniter, वर्डप्रेस, jQuery और Ajax के साथ काम करने का आनंद लेता है। उनके पास PHP में 4 साल का अनुभव और 2 साल का अनुभव iniPhone एप्लीकेशन डेवलपमेंट है.