نۆد جەی ئێس یەکێکە لەو تەکنەلۆجیایانەی کە گۆڕانکاری گەورەی لە جیهانی گەشەپێدانی وێبدا دروست کردووە. ئەم بلۆگە هەوڵ دەدات ڕوونکردنەوەیەکی تەواو پێشکەش بکات بۆ ئەوەی تێگەیشتنێکی قووڵتان لەسەر نۆد جەی ئێس هەبێت.
نۆد جەی ئێس چییە؟
نۆد جەی ئێس بەرنامەیەکی کراوەیە (Open Source) کە ڕێگەت پێدەدات جاڤاسکریپت لە دەرەوەی وێبگەڕەکەدا بەکاربهێنیت. پێش دروستبوونی نۆد جەی ئێس، جاڤاسکریپت تەنها لەناو وێبگەڕەکاندا (وەک کرۆم و فایەرفۆکس) کاری دەکرد. بەڵام ڕایان دال (Ryan Dahl) لە ساڵی ٢٠٠٩دا بیرۆکەیەکی جیاوازی هەبوو: "بۆچی ناتوانین هەمان زمان لە لایەنی سێرڤەریشدا بەکاربهێنین؟"
وێنای ئەوە بکە پردێک هەیە کە دوو دوورگە بەیەکەوە دەبەستێتەوە. نۆد جەی ئێس وەکو ئەو پردەیە کە ڕێگە بە جاڤاسکریپت دەدات لە نێوان دنیای سێرڤەر و وێبگەڕدا گەشت بکات.
بۆچی نۆد جەی ئێس گرنگە؟
کاتێک لەسەر گرنگی نۆد جەی ئێس قسە دەکەین، چەند خاڵێکی سەرەکی هەن کە پێویستە تێیان بگەین:
1. هاوکات کارکردن (Asynchronous)
یەکێک لە بەهێزترین تایبەتمەندییەکانی نۆد جەی ئێس، توانای کارکردنی هاوکاتە. با بە نموونەیەکی ژیانی ڕۆژانە ڕوونی بکەینەوە:
کاتێک کە چێشت لێدەنێیت، دەتوانیت پیازەکە بخەیتە سەر ئاگر و لە کاتی سورکردنیدا، سەوزە پاککەیت یان گۆشت ئامادە بکەیت. پێویست ناکات چاوەڕێ بکەیت تاکو یەکەم هەنگاو تەواو دەبێت پێش ئەوەی دەست بە هەنگاوی دووەم بکەیت. نۆد جەی ئێس بە هەمان شێوە کار دەکات.
کاتێک داوای فایلێک یان زانیاری لە داتابەیسێک دەکرێت، نۆد جەی ئێس چاوەڕێی تەواوبوونی داواکارییەکە ناکات، بەڵکو دەستبەجێ دەچێتە سەر کارێکی دیکە. ئەمەش واتە کاتی کەمتر بەفیڕۆ دەچێت و سیستەمەکە خێراتر کاردەکات.
2. ئیجنی V8 بەهێز
نۆد جەی ئێس لەسەر ئیجنی V8ی گووگڵ دروستکراوە، کە هەمان ئیجنی جاڤاسکریپتە کە لە وێبگەڕی کرۆمدا بەکاردێت. ئەم ئیجنە کۆدی جاڤاسکریپت دەگۆڕێت بۆ کۆدی ماشین (Machine Code) ڕاستەوخۆ، کە دەبێتە هۆی خێرایی زۆر.
ئەگەر نۆد جەی ئێس وەکو ئۆتۆمبێل وێنا بکەین، ئیجنی V8 وەکو ئیجنی فێراری وایە – بەهێز و کارا.
3. پاکێجەکانی NPM
یەکێک لە گەورەترین هێزەکانی نۆد جەی ئێس، سیستەمی بەڕێوەبردنی پاکێجەکەیەتی کە بە NPM (Node Package Manager) ناسراوە. NPM گەورەترین کۆگای پاکێجی کراوەیە لە جیهاندا، کە زیاتر لە ١.٥ ملیۆن پاکێجی تێدایە.
بیر لە NPM وەکو کتێبخانەیەکی گەورە بکەوە کە هەر کتێبێک چارەسەری کێشەیەکی دیاریکراو دەکات.لە بری ئەوەی خۆت سفرەوە کۆد بنووسیت، دەتوانیت پاکێجەکان بەکاربهێنیت کە کەسانی دیکە نووسیویانە.
نۆد جەی ئێس چۆن کار دەکات؟
بۆ تێگەیشتن لەوەی کە نۆد جەی ئێس چۆن کار دەکات، با بیر لە خواردنگەیەک بکەینەوە:
-
لووپی ڕووداو (Event Loop): ئەمە وەکو خزمەتکاری سەرەکی وایە کە داواکارییەکان وەردەگرێت و دابەشیان دەکات.
-
لووپی لیبوف (Libuv): ئەمە وەکو چێشتلێنەرەکانی خواردنگەکە وان کە داواکارییەکان جێبەجێ دەکەن.
-
کاری هاوکات (Non-blocking Operations): کاتێک ئۆردەری نانی پیتزایەک دەدەیت، خزمەتکارەکە چاوەڕێ ناکات تاکو پیتزاکە ئامادە دەبێت پێش ئەوەی ئۆردەری مەشروبێک لە کەسێکی تر وەربگرێت. نۆد جەی ئێس بە هەمان شێوە کاری هاوکات ئەنجام دەدات.
بەکارهێنانەکانی نۆد جەی ئێس
نۆد جەی ئێس بۆ چەندین جۆری پڕۆژە بەکاردێت:
1. API
نۆد جەی ئێس بۆ دروستکردنی APIیەکان (ڕێگاکانی پەیوەندی نێوان بەرنامەکان) زۆر بەناوبانگە. لەبەر خێرایی و کارکردنی هاوکات، دەتوانێت ژمارەیەکی زۆری داواکاری لە یەک کاتدا جێبەجێ بکات.
کۆمپانیا گەورەکانی وەک نێتفلیکس، پەیپال، و لینکدین نۆد جەی ئێس بەکاردەهێنن بۆ API سێرڤەرەکانیان.
2. ئەپی چاتی ڕاستەوخۆ
بەهۆی توانای کارکردنی هاوکات و پشتگیریکردنی وێبسۆکێت (WebSockets)، نۆد جەی ئێس بۆ دروستکردنی ئەپەکانی چات و پەیوەندی ڕاستەوخۆ نموونەیی دیارە.
ئەگەر چاتێکی ڕاستەوخۆ بەکاردەهێنیت بۆ قسەکردن لەگەڵ برادەرەکانت، ئەگەری زۆر هەیە کە نۆد جەی ئێس لە پشتەوەی کار بکات.
3. ئەپی یەک لاپەڕەیی (Single Page Applications)
فرەیموۆرکە بەناوبانگەکانی وەک ڕیاکت، ئەنگولەر، و ڤیو.جەی ئێس هەمووی پشت بە نۆد جەی ئێس دەبەستن بۆ گەشەپێدان و بەکارهێنان.
ئەم جۆرە ئەپانە وەکو بەرنامەی مۆبایل کار دەکەن، بەڵام لە وێبگەڕدا. نموونەی بەرچاو، جیمەیل و فەیسبووکە کە بێ پێویستی نوێکردنەوەی لاپەڕە کاردەکەن.
4. IoT (Internet of Things)
نۆد جەی ئێس لە بواری ئینتەرنێتی شتەکاندا (IoT) زۆر بەکاردێت. لەبەر ئەوەی کەم وزە بەکاردێنێت و خێرایە، بۆ ئامێرەکانی وەک سەعاتی زیرەک، یاریدەدەرانی دەنگی، و سیستەمی ماڵی زیرەک باش گونجاوە.
دەستپێکردن لەگەڵ نۆد جەی ئێس
ئەگەر دەتەوێ دەست بە کارکردن بکەیت لەگەڵ نۆد جەی ئێس، چەند هەنگاوێکی سەرەتایی هەیە:
1. دامەزراندن
سەردانی ماڵپەڕی فەرمی nodejs.org بکە و دوایین وەشانی نۆد جەی ئێس دابەزێنە و دایبمەزرێنە.
2. نووسینی یەکەم بەرنامە
فایلێک بە ناوی app.js
دروست بکە و ئەم کۆدە سادەیە تێبنووسە:
// ئەمە یەکەم بەرنامەی منە بە نۆد جەی ئێس
console.log("سڵاو جیهان! من نۆد جەی ئێس فێر دەبم.");
// دروستکردنی سێرڤەرێکی سادە
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('سڵاو لە نۆد جەی ئێسەوە!\n');
});
server.listen(3000, 'localhost', () => {
console.log('سێرڤەرەکە لە پۆرتی 3000 چاوەڕێی پەیوەندییە...');
});
3. جێبەجێکردنی بەرنامەکە
بە تێرمیناڵ، بڕۆ بۆ فۆڵدەرەکە و بنووسە:
node app.js
ئێستا سێرڤەرەکەت کار دەکات و دەتوانیت لە وێبگەڕەکەتدا سەردانی http://localhost:3000
بکەیت بۆ بینینی ئەنجامەکە.
فرەیموۆرکەکانی نۆد جەی ئێس
هەرچەندە دەتوانیت بە نۆد جەی خودی خۆی کار بکەیت، فرەیموۆرکە بەناوبانگەکان کاری گەشەپێدانت ئاسانتر دەکەن:
1. ئێکسپرێس (Express.js)
ئێکسپرێس سادەترین و بەکارهێنراوترین فرەیموۆرکی نۆد جەی ئێسە. زۆر خێرایە و ئاسانە بۆ فێربوون.
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('سڵاو لە ئێکسپرێسەوە!');
});
app.listen(3000, () => {
console.log('ئەپەکە لە پۆرتی 3000 چاوەڕێیە');
});
2. (Koa.js)
Koa لەلایەن هەمان تیمی ئێکسپرێسەوە دروستکراوە، بەڵام نوێتر و سووکترە. بەهۆی بەکارهێنانی async/await، کۆدەکەت ڕێکوپێکتر و ئاسانتر دەبێت بۆ خوێندنەوە.
3. نێست (Nest.js)
نێست فرەیموۆرکێکی پێشکەوتووە کە بۆ پڕۆژە گەورەکان زۆر باشە. ستراکچەرێکی باش پێشکەش دەکات کە هاوشێوەی ئەنگولەرە.
4. سۆکێت.ئایۆ (Socket.io)
بۆ ئەپەکانی چات و پەیوەندی ڕاستەوخۆ، سۆکێت.ئایۆ باشترین هەڵبژاردنە. بەکارهێنانی زۆر ئاسانە و چەندین تایبەتمەندی پێشکەوتووی هەیە.
کۆتایی
نۆد جەی ئێس ڕێگایەکی نوێی گەشەپێدانی وێبی هێنایە ئاراوە کە ڕێگەی دا بە جاڤاسکریپت لە سێرڤەر و کلاینت هەردووکیاندا بەکاربێت. خێرایی، پاکەجە جۆراوجۆرەکان، و کۆمەڵگەیەکی چالاک وای کردووە کە یەکێک لە هەڵبژاردە سەرەکییەکان بێت بۆ گەشەپێدەرانی سەرتاسەری جیهان.
ئەگەر تازە دەستت پێکردووە لە گەشەپێدانی وێب، یان دەتەوێت فێری شتێکی نوێ ببیت، نۆد جەی ئێس بژاردەیەکی باشە. پشتگیری بەهێز، سەرچاوەی زۆر، و بازاڕی کاری باش، هەموویان وا دەکەن کە نۆد جەی ئێس شایانی وەبەرهێنانی کاتت بێت.
وەکو جەیمز خوانارد، دامەزرێنەری پەیپال دەڵێت: "جاڤاسکریپت پاشایە، و نۆد جەی ئێس تاجەکەیەتی."
