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


टिप्पणियों

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

संस्करण

संस्करण रिलीज़ की तारीख
v8.2.1 2017/07/20
v8.2.0 2017/07/19
v8.1.4 2017/07/11
v8.1.3 2017/06/29
v8.1.2 2017/06/15
v8.1.1 2017/06/13
v8.1.0 2017/06/08
v8.0.0 2017/05/30
v7.10.0 2017/05/02
v7.9.0 2017/04/11
v7.8.0 2017/03/29
v7.7.4 2017/03/21
v7.7.3 2017/03/14
v7.7.2 2017/03/08
v7.7.1 2017/03/02
v7.7.0 2017/02/28
v7.6.0 2017/02/21
v7.5.0 2017/01/31
v7.4.0 2017/01/04
v7.3.0 2016/12/20
v7.2.1 2016/12/06
v7.2.0 2016/11/22
v7.1.0 2016/11/08
v7.0.0 2016/10/25
v6.11.0 2017/06/06
v6.10.3 2017/05/02
v6.10.2 2017/04/04
v6.10.1 2017/03/21
v6.10.0 2017/02/21
v6.9.5 2017/01/31
v6.9.4 2017/01/05
v6.9.3 2017/01/05
v6.9.2 2016/12/06
v6.9.1 2016/10/19
v6.9.0 2016/10/18
v6.8.1 2016/10/14
v6.8.0 2016/10/12
v6.7.0 2016/09/27
v6.6.0 2016/09/14
v6.5.0 2016/08/26
v6.4.0 2016/08/12
v6.3.1 2016/07/21
v6.3.0 2016/07/06
v6.2.2 2016/06/16
v6.2.1 2016/06/02
v6.2.0 2016/05/17
v6.1.0 2016/05/05
v6.0.0 2016/04/26
v5.12.0 2016/06/23
v5.11.1 2016/05/05
v5.11.0 2016/04/21
v5.10.1 2016/04/05
v5.10 2016/04/01
v5.9 2016/03/16
v5.8 2016/03/09
v5.7 2016/02/23
v5.6 2016/02/09
v5.5 2016/01/21
v5.4 2016/01/06
v5.3 2015/12/15
v5.2 2015/12/09
v5.1 2015/11/17
v5.0 2015/10/29
v4.4 2016/03/08
v4.3 2016/02/09
v 4.2 के पश्चात् 2015/10/12
v4.1 2015/09/17
v4.0 2015/09/08
io.js v3.3 2015/09/02
io.js v3.2 2015/08/25
io.js v3.1 2015/08/19
io.js v3.0 2015/08/04
io.js v2.5 2015/07/28
io.js v2.4 2015/07/17
io.js v2.3 2015/06/13
io.js v2.2 2015/06/01
io.js v2.1 2015/05/24
io.js v2.0 2015/05/04
io.js v1.8 2015/04/21
io.js v1.7 2015/04/17
io.js v1.6 2015-03-20
io.js v1.5 2015-03-06
io.js v1.4 2015-02-27
io.js v1.3 2015-02-20
io.js v1.2 2015-02-11
io.js v1.1 2015-02-03
io.js v1.0 2015-01-14
v0.12 2016/02/09
v0.11 2013-03-28
v0.10 2013-03-11
v0.9 2012-07-20
v0.8 2012-06-22
v0.7 2012-01-17
v0.6 2011-11-04
v0.5 2011-08-26
V0.4 2011-08-26
v0.3 2011-08-26
v0.2 2011-08-26
v0.1 2011-08-26

हैलो वर्ल्ड HTTP सर्वर

सबसे पहले, अपने मंच के लिए Node.js स्थापित करें।

इस उदाहरण में हम 1337 पोर्ट पर सुनने वाले एक HTTP सर्वर बनाएंगे, जो Hello, World! भेजता है Hello, World! ब्राउज़र को। ध्यान दें, पोर्ट 1337 का उपयोग करने के बजाय, आप अपनी पसंद के किसी भी पोर्ट नंबर का उपयोग कर सकते हैं जो वर्तमान में किसी अन्य सेवा द्वारा उपयोग में नहीं है।

http मॉड्यूल एक Node.js कोर मॉड्यूल है (Node.js के स्रोत में शामिल एक मॉड्यूल, जिसे अन्य संसाधन स्थापित करने की आवश्यकता नहीं होती है)। http मॉड्यूल http.createServer() विधि का उपयोग करके एक HTTP सर्वर बनाने के लिए कार्यक्षमता प्रदान करता है। एप्लिकेशन बनाने के लिए, निम्नलिखित जावास्क्रिप्ट कोड वाली एक फाइल बनाएं।

const http = require('http'); // Loads the http module

http.createServer((request, response) => {

    // 1. Tell the browser everything is OK (Status code 200), and the data is in plain text
    response.writeHead(200, {
        'Content-Type': 'text/plain'
    });

    // 2. Write the announced text to the body of the page
    response.write('Hello, World!\n');

    // 3. Tell the server that all of the response headers and body have been sent
    response.end();

}).listen(1337); // 4. Tells the server what port to be on
 

फ़ाइल को किसी भी फ़ाइल नाम से सहेजें। इस स्थिति में, यदि हम इसे hello.js तो हम उस फ़ाइल को निर्देशिका में जाकर और निम्नलिखित कमांड का उपयोग करके एप्लिकेशन को चला सकते हैं:

node hello.js
 

बनाया सर्वर तो यूआरएल के साथ पहुँचा जा सकता है 1337: // स्थानीय होस्ट: http या http://127.0.0.1:1337 ब्राउज़र में।

एक सरल वेब पेज "हैलो, वर्ल्ड!" के साथ दिखाई देगा। शीर्ष पर पाठ, जैसा कि नीचे स्क्रीनशॉट में दिखाया गया है।

स्क्रीनशॉट

संपादन योग्य ऑनलाइन उदाहरण।

अंतर्भाग मापदंड

Node.js एक जावास्क्रिप्ट इंजन (क्रोम के लिए Google का V8 इंजन, C ++ में लिखा गया) है जो ब्राउज़र के बाहर जावास्क्रिप्ट को चलाने की अनुमति देता है। जबकि कई पुस्तकालय नोड की कार्यक्षमता को बढ़ाने के लिए उपलब्ध हैं, इंजन बुनियादी कार्यात्मकता को लागू करने वाले मुख्य मॉड्यूल के एक सेट के साथ आता है।

वर्तमान में नोड में शामिल 34 कोर मॉड्यूल हैं:

[ 'assert',
  'buffer',
  'c/c++_addons',
  'child_process',
  'cluster',
  'console',
  'crypto',
  'deprecated_apis',
  'dns',
  'domain',
  'Events',
  'fs',
  'http',
  'https',
  'module',
  'net',
  'os',
  'path',
  'punycode',
  'querystring',
  'readline',
  'repl',
  'stream',
  'string_decoder',
  'timers',
  'tls_(ssl)',
  'tracing',
  'tty',
  'dgram',
  'url',
  'util',
  'v8',
  'vm',
  'zlib' ]
 

यह सूची नोड प्रलेखन एपीआई https://nodejs.org/api/all.html (JSON फ़ाइल: https://nodejs.org/api/all.json ) से प्राप्त की गई थी।

एक नज़र में सभी मुख्य मॉड्यूल

ज़ोर

assert मॉड्यूल अभिकर्मकों के परीक्षण का एक सरल सेट प्रदान करता है जिसका उपयोग आक्रमणकारियों का परीक्षण करने के लिए किया जा सकता है।

बफर

ECMAScript 2015 (ES6) में TypedArray की शुरुआत से पहले, जावास्क्रिप्ट भाषा में बाइनरी डेटा की धाराओं को पढ़ने या हेरफेर करने के लिए कोई तंत्र नहीं था। Buffer वर्ग को Node.js API के भाग के रूप में पेश किया गया था ताकि टीसीपी स्ट्रीम और फ़ाइल सिस्टम ऑपरेशन जैसी चीज़ों के संदर्भ में ऑक्टेट स्ट्रीम के साथ बातचीत संभव हो सके।

अब जब कि TypedArray ES6 में जोड़ दिया गया है, Buffer वर्ग औजार Uin t8Array एक तरह से अधिक अनुकूलित और Node.js 'उपयोग के मामलों के लिए उपयुक्त है कि में एपीआई।

C / C ++ _ एडऑन

Node.js Addons डायनामिकली लिंक्ड शेयर्ड ऑब्जेक्ट्स हैं, जो C या C ++ में लिखे गए हैं, जिन्हें require() फ़ंक्शन का उपयोग करके Node.js में लोड किया जा सकता है, और जैसे कि वे एक साधारण Node.js मॉड्यूल थे। वे मुख्य रूप से Node.js और C / C ++ पुस्तकालयों में चल रहे जावास्क्रिप्ट के बीच एक इंटरफ़ेस प्रदान करने के लिए उपयोग किए जाते हैं।

child_process

child_process मॉड्यूल बच्चे की प्रक्रियाओं को एक तरीके से child_process की क्षमता प्रदान करता है जो समान है, लेकिन पॉपेन (3) के समान नहीं है।

समूह

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

कंसोल

console मॉड्यूल एक सरल डीबगिंग कंसोल प्रदान करता है जो वेब ब्राउज़र द्वारा प्रदान किए गए जावास्क्रिप्ट कंसोल तंत्र के समान है।

क्रिप्टो

crypto मॉड्यूल क्रिप्टोग्राफ़िक कार्यक्षमता प्रदान करता है जिसमें ओपनएसएसएल के हैश, एचएमएसी, सिफर, डिक्रिपर, साइन और फ़ंक्शंस सत्यापित करने के लिए रैपर का एक सेट शामिल है।

deprecated_apis

Node.js API को तब दिखा सकते हैं जब या तो: (a) API के उपयोग को असुरक्षित माना जाता है, (b) एक बेहतर वैकल्पिक API उपलब्ध कराया गया है, या (c) एपीआई में परिवर्तन होने से भविष्य में बड़ी रिलीज़ की उम्मीद है ।

DNS

dns मॉड्यूल में दो अलग-अलग श्रेणियों से संबंधित कार्य होते हैं:

  1. नाम रिज़ॉल्यूशन करने के लिए अंतर्निहित ऑपरेटिंग सिस्टम सुविधाओं का उपयोग करने वाले फ़ंक्शंस, और यह जरूरी नहीं कि किसी भी नेटवर्क संचार का प्रदर्शन करें। इस श्रेणी में केवल एक फ़ंक्शन शामिल है: dns.lookup()
  2. नाम रिज़ॉल्यूशन करने के लिए वास्तविक DNS सर्वर से जुड़ने वाले फ़ंक्शंस, और जो DNS प्रश्नों को करने के लिए हमेशा नेटवर्क का उपयोग करते हैं। इस श्रेणी में dns.lookup() को छोड़कर dns मॉड्यूल में सभी फ़ंक्शन हैं।

डोमेन

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

आयोजन

Node.js कोर एपीआई में से अधिकांश एक मुहावरेदार अतुल्यकालिक घटना-संचालित वास्तुकला के आसपास बनाया गया है जिसमें कुछ विशेष प्रकार की वस्तुएं (जिन्हें "उत्सर्जक" कहा जाता है) समय-समय पर उन घटनाओं का नामकरण करते हैं जिनके कारण फ़ंक्शन ऑब्जेक्ट ("श्रोताओं") को बुलाया जाता है।

FS

फ़ाइल I / O मानक POSIX फ़ंक्शन के आसपास सरल आवरणों द्वारा प्रदान की जाती है। इस मॉड्यूल का उपयोग करने के लिए require('fs') । सभी विधियों में अतुल्यकालिक और तुल्यकालिक रूप हैं।

एचटीटीपी

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

https

HTTPS, TLS / SSL से अधिक HTTP प्रोटोकॉल है। Node.js में इसे एक अलग मॉड्यूल के रूप में लागू किया गया है।

मापांक

Node.js में एक सरल मॉड्यूल लोडिंग सिस्टम है। Node.js में, फ़ाइलें और मॉड्यूल एक-से-एक पत्राचार में हैं (प्रत्येक फ़ाइल को एक अलग मॉड्यूल के रूप में माना जाता है)।

जाल

net मॉड्यूल आपको एक अतुल्यकालिक नेटवर्क आवरण प्रदान करता है। इसमें सर्वर और क्लाइंट (स्ट्रीम कहा जाता है) दोनों बनाने के लिए कार्य शामिल हैं। आप इस मॉड्यूल को require('net'); साथ शामिल कर सकते हैं require('net');

ओएस

os मॉड्यूल ऑपरेटिंग सिस्टम से संबंधित उपयोगिता विधियों की एक संख्या प्रदान करता है।

पथ

path मॉड्यूल फ़ाइल और निर्देशिका पथ के साथ काम करने के लिए उपयोगिताओं प्रदान करता है।

पनीकोड

Node.js में बंडल किए गए पंचकोश मॉड्यूल के संस्करण को पदावनत किया जा रहा है

क्वेरी स्ट्रिंग

querystring मॉड्यूल URL क्वेरी स्ट्रिंग को पार्स और स्वरूपित करने के लिए उपयोगिताओं को प्रदान करता है।

पढ़ने के लिए लाइन

readline मॉड्यूल (जैसे एक पठनीय धारा से डाटा पढ़ने में एक इंटरफेस प्रदान करता process.stdin ) एक समय में एक लाइन।

repl

repl मॉड्यूल एक-पढ़ने के लिए Eval-प्रिंट लूप (आरईपीएल) कार्यान्वयन है कि दोनों अन्य अनुप्रयोगों में एक स्टैंडअलोन कार्यक्रम के रूप में या includible उपलब्ध है प्रदान करता है।

धारा

एक स्ट्रीम Node.js. में स्ट्रीमिंग डेटा के साथ काम करने के लिए एक अमूर्त इंटरफ़ेस है stream मॉड्यूल एक आधार एपीआई प्रदान करता है जो स्ट्रीम इंटरफ़ेस को लागू करने वाली वस्तुओं का निर्माण करना आसान बनाता है।

Node.js. द्वारा कई स्ट्रीम ऑब्जेक्ट दिए गए हैं उदाहरण के लिए, HTTP सर्वर और process.stdout अनुरोध दोनों स्ट्रीम इंस्टेंस हैं।

string_decoder

string_decoder मॉड्यूल स्ट्रिंग में Buffer ऑब्जेक्ट्स को डिकोड करने के लिए एक API प्रदान करता है जो एन्कोडिंग मल्टी-बाइट UTF-8 और UTF-16 वर्णों को संरक्षित करता है।

टाइमर

timer मॉड्यूल शेड्यूलिंग कार्यों के लिए एक वैश्विक एपीआई को उजागर करता है जिसे भविष्य के कुछ समय पर बुलाया जाता है। क्योंकि टाइमर फ़ंक्शन ग्लोबल्स हैं, इसलिए एपीआई का उपयोग करने के लिए कॉल require('timers') नहीं है।

Node.js के भीतर टाइमर फ़ंक्शन वेब ब्राउज़र द्वारा प्रदान की गई टाइमर एपीआई के रूप में एक समान एपीआई को लागू करता है, लेकिन एक अलग आंतरिक कार्यान्वयन का उपयोग करता है जो Node.js इवेंट लूप के आसपास बनाया गया है।

tls_ (एसएसएल)

tls मॉड्यूल ट्रांसपोर्ट लेयर सिक्योरिटी (TLS) और सिक्योर सॉकेट लेयर (SSL) प्रोटोकॉल का कार्यान्वयन प्रदान करता है जो ओपनएसएसएल के शीर्ष पर बनाया गया है।

अनुरेखण

ट्रेस इवेंट V8, नोड कोर और यूजरस्पेस कोड द्वारा उत्पन्न अनुरेखण जानकारी को केंद्रीकृत करने के लिए एक तंत्र प्रदान करता है।

ट्रेसिंग को Node.js एप्लिकेशन शुरू करते समय --trace-events-enabled ध्वज को पास करके सक्षम किया जा सकता है।

tty

tty मॉड्यूल प्रदान करता है tty.ReadStream और tty.WriteStream कक्षाएं। ज्यादातर मामलों में, इस मॉड्यूल का सीधे उपयोग करना आवश्यक या संभव नहीं होगा।

dgram

dgram मॉड्यूल यूडीपी डेटाग्राम सॉकेट्स का कार्यान्वयन प्रदान करता है।

यूआरएल

url मॉड्यूल यूआरएल संकल्प और पार्स के लिए उपयोगिताओं प्रदान करता है।

util

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

v8

v8 मॉड्यूल एपीआई को उजागर करता है जो Node.js बाइनरी में निर्मित V8 के संस्करण के लिए विशिष्ट है।

नोट : एपीआई और कार्यान्वयन किसी भी समय परिवर्तन के अधीन हैं।

वीएम

vm मॉड्यूल V8 वर्चुअल मशीन संदर्भों के भीतर कोड को चलाने और चलाने के लिए एपीआई प्रदान करता है। जावास्क्रिप्ट कोड को संकलित किया जा सकता है और तुरंत चलाया या संकलित किया जा सकता है, सहेजा जा सकता है और बाद में चलाया जा सकता है।

नोट : वीएम मॉड्यूल एक सुरक्षा तंत्र नहीं है। अविश्वास कोड चलाने के लिए इसका उपयोग न करें

zlib

zlib मॉड्यूल Gzip और Deflate / Inflate का उपयोग करके कार्यान्वित की गई कार्यक्षमता प्रदान करता है।

आपका NodeJS आवेदन डिबगिंग

आप नोड-इंस्पेक्टर का उपयोग कर सकते हैं। इसे npm के माध्यम से स्थापित करने के लिए यह कमांड चलाएँ:

npm install -g node-inspector
 

तब आप अपने एप्लिकेशन का उपयोग करके डीबग कर सकते हैं

node-debug app.js
 

Github भंडार यहां पाया जा सकता है: https://github.com/node-inspector/node-inspector


देशी रूप से डिबगिंग

आप इसे इस तरह शुरू करके native.js को भी डिबग कर सकते हैं:

node debug your-script.js
 

अपने डिबगर को उस कोड लाइन में ठीक से तोड़ने के लिए जिसे आप चाहते हैं, इसका उपयोग करें:

debugger;
 

अधिक जानकारी के लिए यहां देखें।

नोड में .js 8 निम्नलिखित कमांड का उपयोग करते हैं:

node --inspect-brk your-script.js
 

फिर Google Chrome के हाल के संस्करण में देखें about://inspect करें और Chrome के DevTools का डिबगिंग अनुभव प्राप्त करने के लिए अपनी नोड स्क्रिप्ट का चयन करें।

आपके आवेदन को ऑनलाइन नियुक्त करना

जब आप अपने ऐप को एक (Node.js- विशिष्ट) होस्ट किए गए वातावरण में तैनात करते हैं, तो यह वातावरण आमतौर पर एक PORT -environment चर प्रदान करता है जिसका उपयोग आप अपने सर्वर को चलाने के लिए कर सकते हैं। पोर्ट नंबर को process.env.PORT बदलने से आप एप्लिकेशन को एक्सेस कर सकते हैं।

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

http.createServer(function(request, response) {
   // your server code
}).listen(process.env.PORT);
 

इसके अलावा, यदि आप डीबग करते समय इस ऑफ़लाइन तक पहुँचना चाहते हैं, तो आप इसका उपयोग कर सकते हैं:

http.createServer(function(request, response) {
  // your server code
}).listen(process.env.PORT || 3000);
 

जहां 3000 ऑफ़लाइन पोर्ट नंबर है।

नमस्ते वर्ल्ड बेसिक रूटिंग

एक बार जब आप समझते हैं कि नोड के साथ एक HTTP सर्वर कैसे बनाया जाता है, तो यह समझना महत्वपूर्ण है कि उपयोगकर्ता द्वारा नेविगेट किए गए पथ के आधार पर इसे "करना" कैसे करना है। इस घटना को "रूटिंग" कहा जाता है।

इसका सबसे मूल उदाहरण यह देखना होगा कि if (request.url === 'some/path/here') , और फिर एक फ़ंक्शन को कॉल करें जो एक नई फ़ाइल के साथ प्रतिक्रिया करता है।

इसका एक उदाहरण यहाँ देखा जा सकता है:

const http = require('http');

function index (request, response) {
    response.writeHead(200);
    response.end('Hello, World!');
}

http.createServer(function (request, response) {
    
    if (request.url === '/') {
        return index(request, response);
    }

    response.writeHead(404);
    response.end(http.STATUS_CODES[404]);

}).listen(1337);
 

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

सबसे पहले, हमारे सभी मार्गों को एक वस्तु में संग्रहीत करते हैं:

var routes = {
    '/': function index (request, response) {
        response.writeHead(200);
        response.end('Hello, World!');
    },
    '/foo': function foo (request, response) {
        response.writeHead(200);
        response.end('You are now viewing "foo"');
    }
}
 

अब जब हमने एक ऑब्जेक्ट में 2 मार्ग संग्रहीत किए हैं, तो अब हम अपने मुख्य कॉलबैक में उनके लिए जांच कर सकते हैं:

http.createServer(function (request, response) {
    
    if (request.url in routes) {
        return routes[request.url](request, response);
    }

    response.writeHead(404);
    response.end(http.STATUS_CODES[404]);

}).listen(1337);
 

अब हर बार जब आप अपनी वेबसाइट को नेविगेट करने का प्रयास करते हैं, तो यह आपके मार्गों में उस पथ के अस्तित्व की जांच करेगा, और यह संबंधित फ़ंक्शन को कॉल करेगा। यदि कोई मार्ग नहीं मिला है, तो सर्वर 404 (नहीं मिला) के साथ जवाब देगा।

और वहां आपके पास है - HTTP सर्वर एपीआई के साथ रूटिंग बहुत सरल है।

हैलो वर्ल्ड कमांड लाइन

Node.js का उपयोग कमांड लाइन उपयोगिताओं को बनाने के लिए भी किया जा सकता है। नीचे दिया गया उदाहरण कमांड लाइन से पहला तर्क पढ़ता है और एक हैलो संदेश प्रिंट करता है।

यूनिक्स प्रणाली पर इस कोड को चलाने के लिए:

  1. एक नई फ़ाइल बनाएं और नीचे दिए गए कोड को पेस्ट करें। फ़ाइल नाम अप्रासंगिक है।
  2. इस फ़ाइल को chmod 700 FILE_NAME साथ निष्पादित chmod 700 FILE_NAME
  3. ./APP_NAME David साथ ऐप चलाएं

विंडोज पर आप चरण 1 करते हैं और इसे node APP_NAME David साथ चलाते हैं

#!/usr/bin/env node

'use strict';

/*
    The command line arguments are stored in the `process.argv` array, 
    which has the following structure:
    [0] The path of the executable that started the Node.js process
    [1] The path to this application
    [2-n] the command line arguments

    Example: [ '/bin/node', '/path/to/yourscript', 'arg1', 'arg2', ... ]
    src: https://nodejs.org/api/process.html#process_process_argv
 */

// Store the first argument as username.
var username = process.argv[2];

// Check if the username hasn't been provided.
if (!username) {

    // Extract the filename
    var appName = process.argv[1].split(require('path').sep).pop();

    //  Give the user an example on how to use the app.
    console.error('Missing argument! Example: %s YOUR_NAME', appName);

    // Exit the app (success: 0, error: 1). 
    // An error will stop the execution chain. For example:
    //   ./app.js && ls       -> won't execute ls
    //   ./app.js David && ls -> will execute ls
    process.exit(1);
}

// Print the message to the console.
console.log('Hello %s!', username);
 

REPL में हैलो वर्ल्ड

जब तर्कों के बिना कहा जाता है, तो Node.js एक REPL (रीड-एवल-प्रिंट-लूप) शुरू करता है जिसे " नोड शेल " के रूप में भी जाना जाता है।

कमांड प्रॉम्प्ट पर node टाइप करें।

$ node
>
 

नोड पर शीघ्र शैल > प्रकार "नमस्ते विश्व!"

$ node
> "Hello World!"
'Hello World!'
 

एक्सप्रेस के साथ हैलो वर्ल्ड

निम्न उदाहरण पोर्ट 3000 पर सुन रहे एक HTTP सर्वर बनाने के लिए एक्सप्रेस का उपयोग करता है, जो "हैलो, वर्ल्ड!" के साथ प्रतिक्रिया करता है। एक्सप्रेस एक आमतौर पर उपयोग किया जाने वाला वेब फ्रेमवर्क है जो HTTP API बनाने के लिए उपयोगी है।

सबसे पहले, एक नया फ़ोल्डर बनाएं, जैसे myAppmyApp में myApp और निम्नलिखित कोड वाली एक नई जावास्क्रिप्ट फ़ाइल hello.js (उदाहरण के लिए इसे hello.js नाम दें)। फिर कमांड लाइन से npm install --save express का उपयोग करके एक्सप्रेस मॉड्यूल npm install --save expressपैकेजों को कैसे स्थापित करें, इस बारे में अधिक जानकारी के लिए इस दस्तावेज़ का संदर्भ लें

// Import the top-level function of express
const express = require('express');

// Creates an Express application using the top-level function
const app = express();

// Define port number as 3000
const port = 3000;

// Routes HTTP GET requests to the specified path "/" with the specified callback function
app.get('/', function(request, response) {
  response.send('Hello, World!');
});

// Make the app listen on port 3000
app.listen(port, function() {
  console.log('Server listening on http://localhost:' + port);
});
 

कमांड लाइन से, निम्न कमांड चलाएँ:

node hello.js
 

अपना ब्राउज़र खोलें और प्रतिक्रिया देखने के लिए http://localhost:3000 या http://127.0.0.1:3000 पर नेविगेट करें।

एक्सप्रेस ढांचे के बारे में अधिक जानकारी के लिए, आप एक्सप्रेस अनुभाग के साथ वेब ऐप्स की जांच कर सकते हैं

कैसे एक मूल HTTPS वेब सर्वर को पाने के लिए और चल रहा है!

एक बार जब आप अपने सिस्टम पर नोड.जेएस स्थापित कर लेते हैं, तो आप HTTP और HTTPS दोनों के लिए समर्थन के साथ चलने वाले एक मूल वेब सर्वर प्राप्त करने के लिए नीचे दी गई प्रक्रिया का पालन कर सकते हैं!



चरण 1: एक प्रमाणपत्र प्राधिकरण बनाएँ

  1. वह फ़ोल्डर बनाएँ जहाँ आप अपनी कुंजी और प्रमाणपत्र संग्रहीत करना चाहते हैं:

    mkdir conf


  1. उस निर्देशिका पर जाएं:

    cd conf


  1. कॉन्फ़िगरेशन शॉर्टकट के रूप में उपयोग करने के लिए इस ca.cnf फ़ाइल को पकड़ो:

    wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/ca.cnf


  1. इस कॉन्फ़िगरेशन का उपयोग करके एक नया प्रमाणपत्र प्राधिकरण बनाएं:

    openssl req -new -x509 -days 9999 -config ca.cnf -keyout ca-key.pem -out ca-cert.pem


  1. अब हमारे पास ca-key.pem और ca-cert.pem में हमारे प्रमाणपत्र प्राधिकारी हैं, चलो सर्वर के लिए एक निजी कुंजी उत्पन्न करते हैं:

    openssl genrsa -out key.pem 4096


  1. कॉन्फ़िगरेशन शॉर्टकट के रूप में उपयोग करने के लिए इस server.cnf फ़ाइल को पकड़ो:

    wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/server.cnf


  1. इस कॉन्फ़िगरेशन का उपयोग करके प्रमाणपत्र पर हस्ताक्षर करने का अनुरोध उत्पन्न करें:

    openssl req -new -config server.cnf -key key.pem -out csr.pem


  1. अनुरोध पर हस्ताक्षर करें:

    openssl x509 -req -extfile server.cnf -days 999 -passin "pass:password" -in csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem



चरण 2: अपने प्रमाणपत्र को मूल प्रमाणपत्र के रूप में स्थापित करें

  1. अपने प्रमाणपत्र को अपने रूट प्रमाणपत्र के फ़ोल्डर में कॉपी करें:

    sudo cp ca-crt.pem /usr/local/share/ca-certificates/ca-crt.pem


  1. अद्यतन CA स्टोर:

    sudo update-ca-certificates



चरण 3: अपना नोड सर्वर शुरू करना

सबसे पहले, आप एक server.js फ़ाइल बनाना चाहते हैं जिसमें आपका वास्तविक सर्वर कोड हो।

Node.js में एक HTTPS सर्वर के लिए न्यूनतम सेटअप कुछ इस तरह होगा:

var https = require('https');
var fs = require('fs');

var httpsOptions = {
    key: fs.readFileSync('path/to/server-key.pem'),
    cert: fs.readFileSync('path/to/server-crt.pem')
};

var app = function (req, res) {
  res.writeHead(200);
  res.end("hello world\n");
}

https.createServer(httpsOptions, app).listen(4433);
 

यदि आप भी http अनुरोधों का समर्थन करना चाहते हैं, तो आपको बस यह छोटा संशोधन करने की आवश्यकता है:

var http = require('http');
var https = require('https');
var fs = require('fs');

var httpsOptions = {
    key: fs.readFileSync('path/to/server-key.pem'),
    cert: fs.readFileSync('path/to/server-crt.pem')
};

var app = function (req, res) {
  res.writeHead(200);
  res.end("hello world\n");
}

http.createServer(app).listen(8888);
https.createServer(httpsOptions, app).listen(4433);
 
  1. उस निर्देशिका पर जाएं जहां आपका server.js स्थित है:

    cd /path/to


  1. server.js चलाएं server.js :

    node server.js

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

शुरू करने के लिए, अपने विकास कंप्यूटर पर Node.js स्थापित करें।

विंडोज: डाउनलोड पेज पर जाएं और इंस्टॉलर को डाउनलोड / रन करें।

Mac: डाउनलोड पेज पर जाएं और इंस्टॉलर को डाउनलोड / रन करें। वैकल्पिक रूप से, आप का उपयोग कर नोड स्थापित कर सकते हैं Homebrew के माध्यम से brew install node का उपयोग कर। Homebrew Macintosh के लिए एक कमांड-लाइन पैकेज मैनजर है, और इसके बारे में अधिक जानकारी Homebrew वेबसाइट पर पाई जा सकती है।

लिनक्स: कमांड लाइन इंस्टॉलेशन पेज पर अपने डिस्ट्रो के निर्देशों का पालन करें।


एक नोड कार्यक्रम चलाना

Node.js प्रोग्राम चलाने के लिए, बस node app.js या nodejs app.js , जहाँ app.js आपके नोड ऐप स्रोत कोड का फ़ाइल नाम है। जिस स्क्रिप्ट को आप चलाना चाहते हैं, उसे खोजने के लिए आपको नोड के लिए .js प्रत्यय को शामिल करने की आवश्यकता नहीं है।

वैकल्पिक रूप से UNIX- आधारित ऑपरेटिंग सिस्टम के तहत, एक नोड प्रोग्राम को टर्मिनल स्क्रिप्ट के रूप में निष्पादित किया जा सकता है। ऐसा करने के लिए, इसे #!/usr/bin/env node जैसे नोड इंटरप्रेटर की ओर इशारा करते हुए एक शेबबैंग के साथ शुरू करने की आवश्यकता है। फ़ाइल को निष्पादन योग्य के रूप में भी सेट किया जाना है, जो कि chmod का उपयोग करके किया जा सकता है। अब स्क्रिप्ट को सीधे कमांड लाइन से चलाया जा सकता है।

टीएलएस सॉकेट: सर्वर और क्लाइंट

इस और नियमित टीसीपी कनेक्शन के बीच केवल प्रमुख अंतर निजी कुंजी और सार्वजनिक प्रमाण पत्र हैं जो आपको एक विकल्प ऑब्जेक्ट में सेट करना होगा।

कैसे एक कुंजी और प्रमाण पत्र बनाने के लिए

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

openssl genrsa -out private-key.pem 1024

एक बार हमारे पास हमारी निजी कुंजी होने के बाद, हम एक CSR (प्रमाण पत्र पर हस्ताक्षर करने का अनुरोध) बना सकते हैं, जो हमारे अनुरोध पर एक फैंसी प्राधिकरण द्वारा हस्ताक्षरित निजी कुंजी है। इसीलिए आपको अपनी कंपनी से संबंधित जानकारी इनपुट करनी होगी। यह जानकारी हस्ताक्षर प्राधिकारी द्वारा देखी जाएगी, और आपको सत्यापित करने के लिए उपयोग की जाएगी। हमारे मामले में, इससे कोई फर्क नहीं पड़ता कि आप क्या टाइप करते हैं, क्योंकि अगले चरण में हम स्वयं अपने प्रमाण पत्र पर हस्ताक्षर करने जा रहे हैं।

openssl req -new -key private-key.pem -out csr.pem

अब जब हमारे पास अपना पेपर भरा हुआ है, तो यह बहाना करने का समय है कि हम एक शांत हस्ताक्षर अधिकारी हैं।

openssl x509 -req -in csr.pem -signkey private-key.pem -out public-cert.pem

अब जब आपके पास निजी कुंजी और सार्वजनिक प्रमाणपत्र है, तो आप दो NodeJS ऐप्स के बीच एक सुरक्षित कनेक्शन स्थापित कर सकते हैं। और, जैसा कि आप उदाहरण कोड में देख सकते हैं, यह एक बहुत ही सरल प्रक्रिया है।

महत्वपूर्ण!

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

TLS सॉकेट सर्वर

'use strict';

var tls = require('tls');
var fs = require('fs');

const PORT = 1337;
const HOST = '127.0.0.1'

var options = {
    key: fs.readFileSync('private-key.pem'),
    cert: fs.readFileSync('public-cert.pem')
};

var server = tls.createServer(options, function(socket) {

    // Send a friendly message
    socket.write("I am the server sending you a message.");

    // Print the data that we received
    socket.on('data', function(data) {

        console.log('Received: %s [it is %d bytes long]',
            data.toString().replace(/(\n)/gm,""),
            data.length);

    });

    // Let us know when the transmission is over
    socket.on('end', function() {

        console.log('EOT (End Of Transmission)');

    });

});

// Start listening on a specific port and address
server.listen(PORT, HOST, function() {

    console.log("I'm listening at %s, on port %s", HOST, PORT);

});

// When an error occurs, show it.
server.on('error', function(error) {

    console.error(error);

    // Close the connection after the error occurred.
    server.destroy();

});
 

टीएलएस सॉकेट क्लाइंट

'use strict';

var tls = require('tls');
var fs = require('fs');

const PORT = 1337;
const HOST = '127.0.0.1'

// Pass the certs to the server and let it know to process even unauthorized certs.
var options = {
    key: fs.readFileSync('private-key.pem'),
    cert: fs.readFileSync('public-cert.pem'),
    rejectUnauthorized: false
};

var client = tls.connect(PORT, HOST, options, function() {

    // Check if the authorization worked
    if (client.authorized) {
        console.log("Connection authorized by a Certificate Authority.");
    } else {
        console.log("Connection not authorized: " + client.authorizationError)
    }

    // Send a friendly message
    client.write("I am the client sending you a message.");

});

client.on("data", function(data) {

    console.log('Received: %s [it is %d bytes long]',
        data.toString().replace(/(\n)/gm,""),
        data.length);

    // Close the connection after receiving the message
    client.end();

});

client.on('close', function() {

    console.log("Connection closed");

});

// When an error ocoures, show it.
client.on('error', function(error) {

    console.error(error);

    // Close the connection after the error occurred.
    client.destroy();

});