नोड.जेएस
| Original author(s) | रयान डाहल |
|---|---|
| Developer(s) | ओपनJS फाउंडेशन |
| Initial release | May 27, 2009[1] |
| Stable release | Script error: The module returned a nil value. It is supposed to return an export table.
/ Script error: The module returned a nil value. It is supposed to return an export table. |
| Written in | C, C++, जावास्क्रिप्ट |
| Operating system | z/OS, लिनक्स,, मैक OS, माइक्रोसॉफ्ट विंडोज, स्मार्ट OS, फ्री BSD, ओपन BSD, IBM AIX[2] |
| Type | Runtime environment |
| License | MIT License[3][4] |
नोड.js एक क्रॉस-प्लेटफॉर्म, ओपन-सोर्स सर्वर है। जो माइक्रोसॉफ़्ट विंडोज़, लिनक्स, यूनिक्स, मैक OS, जो अन्य पर चल सकता है। नोड.js एक बैक-एंड जावास्क्रिप्ट कार्यावधि परिवेश है, जो V8 जावास्क्रिप्ट इंजन पर चलते है, और एक वेब ब्राउज़र के बाहर जावास्क्रिप्ट कोड निष्पादित करते है।
नोड.js डेवलपर्स को कमांड लाइन टूल लिखने और सर्वर-साइड स्क्रिप्टिंग के लिए जावास्क्रिप्ट का उपयोग करने देता है। सर्वर पर जावास्क्रिप्ट कोड चलाने की क्षमता अधिकांशतः उपयोगकर्ता के वेब ब्राउज़र पर पेज भेजे जाने से पहले गतिशील वेब पेज सामग्री उत्पन्न करने के लिए किया जाता है। फलस्वरूप, नोड.js एक जावास्क्रिप्ट प्रतिमान का प्रतिनिधित्व करते है,[5] सर्वर बनाम उपभोगता-ओर प्रोग्रामिंग के लिए विभिन्न भाषाओं का उपयोग करने के विपरीत, एक ही प्रोग्रामिंग भाषा के आसपास वेब-एप्लिकेशन विकास को एकीकृत करता है।
नोड.js में एक वृत्तांत-संचालित वास्तुकला है जो अतुल्यकालिक I/O में सक्षम है। इन डिज़ाइन विकल्पों का उद्देश्य कई इनपुट/आउटपुट संचालन के साथ-साथ वास्तविक समय वेब अनुप्रयोगों के साथ वेब अनुप्रयोगों में संदेश प्रवाह और विस्तार क्षमता को अनुकूलित करना है।[6]
नोड.js वितरित विकास परियोजना पहले नोड.js फाउंडेशन द्वारा शासित थी,[7] और अब ओपन JS फाउंडेशन बनाने के लिए JS फाउंडेशन के साथ विलय कर दिया गया है। ओपन JS फाउंडेशन को लिनक्स फाउंडेशन के सहयोगात्मक परियोजना कार्यक्रम द्वारा सुविधा प्रदान की जाती है।[8]
नोड.js सॉफ़्टवेयर के संगठित उपयोगकर्ताओं में गोडैडी,[9] ग्रूपन,[10] IBM,[11] लिंक्डइन,[12][13] माइक्रोसाफ्ट,[14][15] नेटफ्लिक्स,[16] पेपैल,[17][18] SAP[19] वॉल-मार्ट ,[20] याहू !,[21] और अमेज़ॅन वेब सर्विसेज सम्मलित हैं। [22]
इतिहास
नोड.js का आरंभ 2009 में रयान डाहल द्वारा लिखा गया था,[23] पहले सर्वर-साइड जावास्क्रिप्ट क्लाइमेट, नेटस्केप के लाइववायर प्रो वेब आरंभ के लिये लगभग 13 साल बाद विकसित किया था।[24] प्रारंभिक लोकार्पण केवल लिनक्स और मैक OS का समर्थन किया था।[25]
डाहल ने 2009 में सबसे लोकप्रिय वेब सर्वर,अपाचे HTTP सर्वर की सीमित संभावनाओं की आलोचना की, जिसमें बहुत सारे समवर्ती कनेक्शन और कोड बनाने का सबसे सामान्य (अनुक्रमिक प्रोग्रामिंग) को संभालने की क्षमता थी, जब कोड अवरुद्ध हो जाता था। तो एक साथ कनेक्शन की स्थिति में संपूर्ण प्रक्रिया या निहित एकाधिक निष्पादन स्तंभ हो जाती थी।[26]
डाहल ने 8 नवंबर 2009 को उद्घाटन यूरोपीय js कॉन्फ में इस परियोजना का प्रदर्शन किया था।[27][28][29] नोड.js ने गूगल के क्रोम V8 जावास्क्रिप्ट इंजन, एक इवेंट लूप और एक निम्न-स्तरीय I/O अप्लिकेशन प्रोग्रामिंग अंतरफलक को संयोजित किया था।[30]
जनवरी 2010 में, नोड.js क्लाइमेट के लिए npm नामक एक पैकेज प्रबंधक उपस्थित किया गया था।[31] पैकेज प्रबंधक प्रोग्रामर्स के लिए नोड.js पैकेजों के स्रोत कोड को प्रकाशित और समिति करना और आसान बनाना है और इसे पैकेजों की स्थापना, अद्यतन और संस्थापन को सरल बनाने के लिए डिज़ाइन किया गया है। [30]
जून 2011 में, माइक्रोसॉफ्ट और जॉयंट ने नोड.js का एक देशी विंडोज़ संस्करण लागू किया थ।[33] विंडोज़ को सपोर्ट करने वाला पहला नोड.js बिल्ड जुलाई 2011 में जारी किया गया था।
जनवरी 2012 में, डाहल ने परियोजना का प्रबंधन करने के लिए सहकर्मी और NPM निर्माता इसहाक श्लुएटर को बढ़ावा दिया था। [32] जनवरी 2014 में, श्लुएटर ने घोषणा की कि टिमोथी J. फॉन्टेन इस परियोजना का नेतृत्व करेंगे।[33]
दिसंबर 2014 में, फेडर इंडुटनी ने io.js प्रारंभ किया, जो नोड.js का एक हिस्सा है। जॉयंट के शासन पर आंतरिक संघर्ष के कारण, io.js को एक अलग तकनीकी समिति के साथ एक खुले शासन विकल्प के रूप में बनाया गया था।[34][35] नोड.js के विपरीत,[36] लेखकों ने io.js को गूगल V8 जावास्क्रिप्ट इंजन की नवीनतम लोकार्पण के साथ अद्यतन रखने की योजना बनाई है।[37]
फरवरी 2015 में, एक तटस्थ नोड.js फाउंडेशन बनाने के प्रयोजन की घोषणा की गई थी। जून 2015 तक, नोड.js और io.js समुदायों ने नोड.js फाउंडेशन के तहत एक साथ काम करने के लिए मतदान किया था।[38]
सितंबर 2015 में, नोड.JS V0.12 और IO.JS V3.3 को वापस नोड V4.0 में एक साथ मिला दिया गया था।[39] इस विलय से नोड.js में V8 ES6 सुविधाएँ और एक दीर्घकालिक समर्थन लोकार्पण चक्र लाया था।[40] 2016 तक, IO.JS वेबसाइट अनुशंसा करती है कि डेवलपर्स नोड.js पर वापस चले जाएं और मर्ज के कारण IO.JS की कोई और लोकार्पण की योजना नहीं बनाई गई थी।[41]
2019 में, JS फाउंडेशन और नोड.js फाउंडेशन का विलय होकर ओपन JS फाउंडेशन बना गया था।
15 मार्च 2023 को, नोड.js 19.8.1 प्रचलित किया गया था।[42]
अवलोकन
नोड.js जावास्क्रिप्ट और "मॉड्यूल" के संग्रह का उपयोग करके वेब सर्वर और नेटवर्किंग टूल के निर्माण की अनुमति देता है जो विभिन्न मुख्य कार्यात्मकताओं को संभालते हैं।[27][30][43][44][45] फाइल सिस्टम I/O, नेटवर्किंग (DNS, HTTP, TCP, TLS/SSL, या UDP), बाइनरी डेटा, क्रिप्टोग्राफी फ़ंक्शंस, डेटा स्ट्रीम और अन्य मुख्य फ़ंक्शंस के लिए मॉड्यूल प्रदान किए जाते हैं।[30][44][46] नोड.js के मॉड्यूल सर्वर अनुप्रयोगों को लिखने की जटिलता को कम करने के लिए डिज़ाइन किए गए API का उपयोग करते हैं।[30][44]
जावास्क्रिप्ट एकमात्र ऐसी भाषा है जिसका नोड.js मूल रूप से समर्थन करता है, परंतु कई कंपाइल-टू-JS भाषायें उपलब्ध हैं।[47] परिणामस्वरूप, नोड.js अनुप्रयोगों को कॉफीस्क्रिप्ट,[48] डार्ट, टाइपस्क्रिप्ट, क्लोजरस्क्रिप्ट और अन्य में लिखा जा सकता है।
नोड.js का उपयोग मुख्य रूप से वेब सर्वर जैसे नेटवर्क प्रोग्राम बनाने के लिए किया जाता है।[43] नोड.js और PHP के बीच सबसे महत्वपूर्ण अंतर यह है कि PHP में अधिकांश फ़ंक्शन में एक खण्ड समूह होता हैं, जबकि नोड.js फ़ंक्शन ग़ैर-अवरोधन होते हैं,[49][50] और पूर्णता या विफलता का संकेत देने के लिए पुन: साक्षात्कार का उपयोग करते है।[43]
नोड.js आधिकारिक तौर पर लिनक्स, मैक OS और माइक्रोसॉफ़्ट विंडोज़ 8.1 और सर्वर 2012 पर समर्थित है,[2]स्मार्ट OS और IBM AIX के लिए टियर 2 समर्थन और फ्री BSD के लिए प्रायोगिक समर्थन के साथ ओपन BSD भी काम करता है, और LTS संस्करण IBM i (AS/400) के लिए उपलब्ध है।[51] प्रदान किया गया स्रोत कोड आधिकारिक तौर पर समर्थित ऑपरेटिंग सिस्टम के समान ऑपरेटिंग सिस्टम पर भी बनाया जा सकता है या नॉनस्टॉप OS[52] और यूनिक्स सर्वर जैसे अन्य का समर्थन करने के लिए तीसरे पक्ष द्वारा संशोधित किया जा सकता है।
प्लेटफार्म आर्किटेक्चर
नोड.js वेब सर्वर पर वृत्तांत-संचालित प्रोग्रामिंग लाता है, जिससे जावास्क्रिप्ट में शीघ्र वेब सर्वर का विकास संभव हो पाता है।[30] डेवलपर्स वृत्तांत-संचालित प्रोग्रामिंग के एक सरलीकृत मॉडल का उपयोग करके थ्रेडिंग का उपयोग किए बिना स्केलेबल सर्वर बना सकते हैं जो किसी कार्य के पूरा होने का संकेत देने के लिए पुन: साक्षात्कार का उपयोग करता है।[30] नोड.js एक अंकन भाषा को यूनिक्स नेटवर्क प्रोग्रामिंग की ऊर्जा से जोड़ता है।[30]
नोड.js को गूगल के V8 जावास्क्रिप्ट इंजन के शीर्ष पर बनाया गया था चूंकि यह BSD लाइसेंस के तहत ओपन-सोर्स किया गया था। यह HTTP, DNS और TCP जैसे इंटरनेट बुनियादी सिद्धांतों में कुशल है।[27] जावास्क्रिप्ट भी एक प्रसिद्ध भाषा थी, जिसने नोड.js को वेब डेवलपर समुदाय के लिए सुलभ बना दिया था।[27]
उद्योग समर्थन
यहां नोड.js के लिए हजारों ओपन-सोर्स लाइब्रेरी हैं, उनमें से अधिकांश NPM वेबसाइट पर आयोजन किया जाता हैं। ऐसे कई डेवलपर सम्मेलन और कार्यक्रम हैं जो नोड.js समुदाय का समर्थन करते हैं, जिनमें नोडकॉन्फ़, नोड इंटरएक्टिव और नोड शिखर सम्मेलन के साथ-साथ कई क्षेत्रीय कार्यक्रम भी सम्मलित हैं।
ओपन-सोर्स समुदाय ने अनुप्रयोगों के विकास में तेजी लाने के लिए वेब फ्रेमवर्क विकसित किया है। इस तरह के फ्रेमवर्क में कनेक्ट, एक्सप्रेस.JS, सॉकेट.IO, फेदर्स.JS, कोआ.JS, हापी.JS, सेल्स.JS, मेटियोर, डर्बी और कई अन्य सम्मलित हैं।[30][53] अन्य भाषायें या माइक्रोसॉफ्ट .NET जैसे कार्यावधि परिस्थति के साथ इंटरफेस करने के लिए विभिन्न पैकेज भी बनाए गए हैं।[54]
आधुनिक डेस्कटॉप ITI विशेष रूप से नोड.js अनुप्रयोगों के लिए संपादन और डिबगिंग सुविधाएँ प्रदान करते हैं। ऐसे ITI में एटम, ब्रैकेट्स, जेटब्रेन्स MPS वेबस्टॉर्म,[55][56] माइक्रोसॉफ्ट विजुअल स्टूडियो[57] सम्मलित हैं।[58][59][60][61]) नेटबीन्स,[62] नोडेक्लिप्स एनाइड स्टूडियो[63] (एक्लिप्स-आधारित), और विजुअल स्टूडियो कोड[64][65] कुछ ऑनलाइन वेब-आधारित IDE भी नोड.js का समर्थन करते हैं, जैसे कोडेनी वेयर, कोडेनवी, क्लाउड 9 IDE, कोडिंग, और नोड-रेड में विजुअल फ्लो एडिटर है।
नोड.js जेलास्टिक, गूगल क्लाउड प्लेटफ़ॉर्म, AWS इलास्टिक बीनस्टॉक, जॉयंट और अन्य जैसे कई क्लाउड-होस्टिंग प्लेटफ़ॉर्म पर समर्थित है।
लोकार्पण
| रिलीस[66] | स्टेटस | कोड नेम | रिलीज़ डेट | मेंटेनेंस एन्ड |
|---|---|---|---|---|
| 0.10.x | End-of-Life | 2013-03-11 | 2016-10-31 | |
| 0.12.x | End-of-Life | 2015-02-06 | 2016-12-31 | |
| 4.x | End-of-Life | आर्गन[67] | 2015-09-08 | 2018-04-30 |
| 5.x | End-of-Life | 2015-10-29 | 2016-06-30 | |
| 6.x | End-of-Life | बोरोन[67] | 2016-04-26 | 2019-04-30 |
| 7.x | End-of-Life | 2016-10-25 | 2017-06-30 | |
| 8.x | End-of-Life | कार्बन[67] | 2017-05-30 | 2019-12-31 |
| 9.x | End-of-Life | 2017-10-01 | 2018-06-30 | |
| 10.x | End-of-Life | दुबनीम[67] | 2018-04-24 | 2021-04-30 |
| 11.x | End-of-Life | 2018-10-23 | 2019-06-01 | |
| 12.x | End-of-Life | अर्बियम[67] | 2019-04-23 | 2022-04-30 |
| 13.x | End-of-Life | 2019-10-22 | 2020-06-01 | |
| 14.x | Maintenance LTS | फेर्मियम[67] | 2020-04-21 | 2023-04-30 |
| 15.x | End-of-Life | 2020-10-20 | 2021-06-01 | |
| 16.x | Maintenance LTS | गैलियम[67] | 2021-04-20 | 2023-09-11[68] |
| 17.x | End-of-Life | 2021-10-19 | 2022-06-01 | |
| 18.x | Active LTS | हाइड्रोजन[67] | 2022-04-19 | 2025-04-30 |
| 19.x | Active | 2022-10-18 | 2023-06-01 | |
| 20.x | Current | न्यू वर्शन[69] | 2023-04-18 | 2026-04-30 |
| 21.x | Planned | [67] | 2023-10-17 | 2024-05-30 |
| 22.x | Planned | [67] | 2024-04-15 | 2027-04-28 |
| 23.x | Planned | [67] | 2024-10-14 | 2025-05-27 |
Legend: Old version Older version, still maintained Latest version Future release | ||||
नोड.js की नई प्रमुख लोकार्पण हर छह महीने में गिटहब मुख्य शाखा से अवरोध की जाती हैं। सम-संख्या वाले संस्करण अप्रैल में अवरोध कीये जाते हैं और विषम-संख्या वाले संस्करण अक्टूबर में अवरोध होते हैं। जब एक नया विषम संस्करण प्रचलित किया जाता है, तो पिछला सम संस्करण दीर्घकालिक समर्थन के संक्रमण से गुजरता है, जो उस संस्करण को LTS नामित होने की डेट से 18 महीने का सक्रिय समर्थन देता है। इन 18 महीनों की समाप्ति के बाद, LTS लोकार्पण को 12 महीने की अतिरिक्त रखरखाव सहायता प्राप्त होता है। एक सक्रिय संस्करण को वर्तमान लोकार्पण में आने के कुछ सप्ताह बाद परिवर्तनों के ग़ैर-खंडन बैकपोर्ट प्राप्त होते हैं। एक निर्वाह लोकार्पण को केवल महत्वपूर्ण सुधार और प्रलेखन अद्यतन प्राप्त होते हैं।[67] LTS वर्किंग ग्रुप नोड.js फाउंडेशन की तकनीकी संचालन समिति के सहयोग से रणनीति और नीति का प्रबंधन करता है।
पारिभाषिक विवरण
नोड.js एक जावास्क्रिप्ट कार्यावधि परिवेश है जो आने वाले अनुरोधों को एक लूप में संसाधित करता है, जिसे इवेंट लूप कहा जाता है।
आंतरिक
नोड.js अतुल्यकालिक घटनाओं को संभालने के लिए हुड के नीचे लिबुव का उपयोग करता है। लिबव विंडोज और पॉज़िक्स-आधारित सिस्टम जैसे लिनक्स, मैक OS, OSS ऑन नॉनस्टॉप और यूनिक्स दोनों पर नेटवर्क और फ़ाइल सिस्टम कार्यक्षमता के लिए एक अमूर्त परत है। HTTP समर्थन के लिए नोड.js nghttp2 पर निर्भर करता है। संस्करण 20 के अनुसार, नोड.js ada लाइब्रेरी का उपयोग करता है जो अप-टू-डेट व्हाट WG URL अनुपालन प्रदान करता है। संस्करण 19.5 के अनुसार, तेजी से यूनिकोड सत्यापन और ट्रांसकोडिंग के लिए नोड.js simdutf लाइब्रेरी का उपयोग करता है .
थ्रेडिंग
नोड.js ग़ैर -अवरोधन I/O कॉल का उपयोग करते हुए एकल थ्रेडिंग इवेंट लूप पर काम करता है, जो इसे थ्रेड संदर्भ स्विचिंग की लागत के बिना हजारों समवर्ती कनेक्शनों का समर्थन करने की अनुमति देता है।[70] पर्यवेक्षक पैटर्न का उपयोग करने वाले सभी अनुरोधों के बीच एक एकल थ्रेड डिज़ाइन अत्यधिक समवर्ती अनुप्रयोगों के निर्माण के लिए है, जहां I/O करने वाले किसी भी फ़ंक्शन को पुन: साक्षात्कार का उपयोग करना होगा। एकल-थ्रेडेड इवेंट लूप को समायोजित करने के लिए, नोड.js लिब्यू लाइब्रेरी का उपयोग करता है - जो बदले में, एक निश्चित आकार के थ्रेड पूल का उपयोग करता है जो कुछ गैर-अवरुद्ध अतुल्यकालिक I/O संचालन को संभालता है।[6]
एक थ्रेड पूल नोड.js में समानांतर कार्यों के निष्पादन को संभालता है। मुख्य थ्रेड फ़ंक्शन निर्देश कार्यों को पोस्ट करता है, जिसे थ्रेड पूल में निष्पादित करता है। नेटवर्किंग जैसे स्वाभाविक रूप से गैर-अवरुद्ध सिस्टम फ़ंक्शंस मूल-पृष्ठ ग़ैर-अवरोधन सॉकेट में अनुवादित होते हैं, जबकि अंतर्निहित रूप से अवरोधन सिस्टम फ़ंक्शंस जैसे फ़ाइल I/O अपने स्वयं के थ्रेड्स पर अवरुद्ध नियम से चलते हैं। जब थ्रेड पूल में कोई थ्रेड किसी कार्य को पूरा करता है, तो यह मुख्य थ्रेड को सूचित करता है, जो बदले में जागता है और पंजीकृत पुन: साक्षात्कार निष्पादित करता है।
इस एकल-थ्रेडेड दृष्टिकोण का नकारात्मक पहलू यह है कि नोड.js क्लस्टर जैसे अतिरिक्त मॉड्यूल का उपयोग किए बिना जिस मशीन पर यह चल रहा है उसके CPU कोर की संख्या में वृद्धि करके ऊर्ध्वाधर स्केलिंग की अनुमति नहीं देता है,[49] स्ट्रॉन्गलूप प्रोसेस मैनेजर,[71] [72] चूंकि, डेवलपर्स लिबव थ्रेड पूल में थ्रेड्स की डिफ़ॉल्ट संख्या बढ़ा सकते हैं। सर्वर ऑपरेटिंग सिस्टम (OS) द्वारा इन थ्रेड्स को कई कोर में वितरित करने की संभावना है।[73] एक और समस्या यह है कि लंबे समय तक चलने वाली गणनाएं और अन्य CPU-बाध्य कार्य पूरा होने तक पूरे इवेंट-लूप को रोक देते हैं।[citation needed]
V8
V8 जावास्क्रिप्ट निष्पादन इंजन है जिसे प्रारंभ में गूगल क्रोम के लिए बनाया गया था। इसे 2008 में गूगल द्वारा ओपन-सोर्स किया गया था। C++ में लिखा गया, V8 कार्यावधि पर जावास्क्रिप्ट स्रोत कोड को मूल मशीन कोड में संकलित करता है।[6] 2016 तक, इसमें इग्निशन, एक बायटेकोड इंटरप्रेटर भी सम्मलित है।
पैकेज प्रबंधन
npm नोड.js सर्वर प्लेटफ़ॉर्म के लिए पूर्व-स्थापित पैकेज प्रबंधक है। यह npm रजिस्ट्री से नोड.js प्रोग्राम स्थापित करता है, तृतीय-पक्ष नोड.js प्रोग्रामों की स्थापना और प्रबंधन को व्यवस्थित करता है। NPM रजिस्ट्री में पैकेज साधारण सहायक लाइब्रेरी जैसे लॉडैश से लेकर ग्रंट जैसे टास्क रनर तक हो सकते हैं।
एकीकृत API
नोड.js को एक ब्राउज़र के साथ एक साइट, एक डेटाबेस के साथ जोड़ा जा सकता है जो JSON डेटा (जैसे कि पोस्टग्रे SQL,[74] मोंगो DB, या काउच DB) और JSON को एकीकृत जावास्क्रिप्ट डेवलपमेंट स्टैक के लिए सपोर्ट करता है। MVC, MVP, MVVM इत्यादि जैसे अनिवार्य रूप से सर्वर-साइड विकास पैटर्न के अनुकूलन के साथ, नोड.js क्लाइंट साइड और सर्वर साइड के बीच समान मॉडल और सेवा इंटरफ़ेस के पुन: उपयोग की अनुमति देता है।
इवेंट लूप
नोड.js ऑपरेटिंग सिस्टम के साथ पंजीकृत होता है इसलिए OS इसे कनेक्शन के बारे में सूचित करता है और पुन: साक्षात्कार प्रचलित करता है। नोड.js कार्यावधि के अन्दर, प्रत्येक कनेक्शन एक छोटा संचय आवंटन है। परंपरागत रूप से, अपेक्षाकृत हेवीवेट OS प्रक्रियाएं या थ्रेड प्रत्येक कनेक्शन को संभालते हैं। नोड.js प्रक्रियाओं या थ्रेड्स के अतिरिक्त विस्तार क्षमता के लिए इवेंट लूप का उपयोग करता है।[75] अन्य इवेंट-संचालित सर्वरों के विपरीत, नोड.js के इवेंट लूप को स्पष्ट रूप से कॉल करने की आवश्यकता नहीं है। इसके अतिरिक्त, पुन: साक्षात्कार परिभाषित किए जाते हैं, और सर्वर स्वचालित रूप से पुन: साक्षात्कार परिभाषा के अंत में इवेंट लूप में प्रवेश करता है। जब कोई और पुन: साक्षात्कार नहीं किया जाना हो तो नोड.js इवेंट लूप से बाहर निकल जाता है।
वेबअसेंबली
नोड.js वेबअसेंबली को सपोर्ट करता है और नोड 14 के अनुसार इसमें WASI,वेबअसेंबली सिस्टम इंटरफ़ेस का प्रयोगात्मक सपोर्ट है।
मूल बंधन
नोड.js N-API नामक C-आधारित API के माध्यम से "ऐड-ऑन" बनाने का एक नियम प्रदान करता है, जिसका उपयोग .node C/C++ में लिखे स्रोत कोड से लोड करने योग्य नोड मॉड्यूल का उत्पादन करने के लिए किया जा सकता है।[76] मॉड्यूल को सीधे मेमोरी में लोड किया जा सकता है और JS क्लाइमेट के अन्दर से सरल कॉमन JS मॉड्यूल के रूप में निष्पादित किया जा सकता है। N-API का कार्यान्वयन आंतरिक C/C++ नोड.js और V8 ऑब्जेक्ट्स पर निर्भर करता है, जिसके लिए उपयोगकर्ताओं को अपने मूल स्रोत कोड में नोड.js विशिष्ट हेडर आयात (सम्मलित) करने की आवश्यकता होती है।[76]
चूँकि नोड.js API बाइनरी स्तर पर परिवर्तन के अधीन है, ठीक से काम करने के लिए मॉड्यूल को विशिष्ट नोड.js संस्करणों के विरुद्ध बनाया है। समस्या का समाधान करने के लिए, तीसरे पक्षों ने API के शीर्ष पर ओपन-सोर्स्ड С/С++ रैपर पेश किए हैं जो समस्या को आंशिक रूप से कम करते हैं। वे इंटरफ़ेस को सरल बनाते हैं, परंतु एक साइड इफेक्ट के रूप में वे जटिलता भी ला सकते हैं जिससे अनुरक्षकों को निपटना पड़ता है। भले ही नोड.js की मुख्य कार्यक्षमता जावास्क्रिप्ट अंतर्निहित लाइब्रेरी में रहती है, C++ में लिखे गए मॉड्यूल का उपयोग क्षमताओं को बढ़ाने और अनुप्रयोगों के प्रदर्शन को बेहतर बनाने के लिए किया जा सकता है।
ऐसे मॉड्यूल तैयार करने के लिए एक उपयुक्त C++ कंपाइलर और आवश्यक हेडर की आवश्यकता होती है, उदाहरण के लिए,