[Node.js Asoslari][1/12] Node.js nima va qanday ishlaydi
Bu — Node.js bo'yicha 12 ta maqoladan iborat seriyaning birinchisi. Unda Node.js nima ekanini, uning ichida nima borligini va nima uchun u serverda keng ishlatilishini ko'rib chiqamiz. Kod yozishni…
Bu — Node.js bo’yicha 12 ta maqoladan iborat seriyaning birinchisi. Unda Node.js nima ekanini, uning ichida nima borligini va nima uchun u serverda keng ishlatilishini ko’rib chiqamiz.
Kod yozishni keyingi maqoladan boshlaymiz. Avval nima bilan ish qilayotganimizni tushunib olaylik.
Bu seriya kim uchun
Sizda quyidagilar bo’lsa yetarli:
- JavaScript asoslari: o’zgaruvchi, funksiya, obyekt, massiv
- terminalda minimal ish: papkaga kirish, fayl yaratish
Freymvork, TypeScript yoki ma’lumotlar bazasini bilish shart emas — bu seriyada ularning birortasi ishlatilmaydi.
Agar JavaScript’ni umuman bilmasangiz, avval shu tildan boshlagan ma’qul. Node.js — alohida til emas, o’sha JavaScript’ning boshqa muhitda ishlashi.
Bu seriyada nima bo’ladi
12 ta maqola, uch bosqichda:
- Asos — o’rnatish, modullar, npm va package.json
- Node qanday ishlaydi — Event Loop, async/await, xatolar, EventEmitter
- Amaliyot — fayllar, oqimlar, o’z serveringiz, CLI utilitasi
Seriya oxirida siz freymvorksiz, sof Node.js’da ishlaydigan server yoza olasiz va uning ichida nima sodir bo’layotganini tushunasiz.
Node.js nima
Node.js — JavaScript kodini brauzerdan tashqarida ishga tushiradigan dastur. Ya’ni JavaScript endi faqat sahifa ichida emas, oddiy kompyuter dasturi kabi ham ishlay oladi: fayl ocha oladi, tarmoqni tinglaydi, ma’lumotlar bazasiga ulanadi.
Til o’zgarmaydi. Muhit o’zgaradi.
Brauzer bilan farqi
Brauzerda sizga sahifa bilan ishlash uchun narsalar berilgan:
window.location.href;
document.getElementById("btn");
alert("salom");
Node.js’da bularning hech biri yo’q. Chunki sahifa ham, oyna ham yo’q. Buning o’rniga boshqa narsalar bor:
process.argv; // terminaldan berilgan argumentlar
require("fs"); // fayl tizimi
require("http"); // server ochish
Agar Node.js’da document ni chaqirsangiz — xato oladi. Bu xato emas, shunday bo’lishi kerak.
Ichida nima bor
Node.js ikki qismdan iborat.
V8 — Google’ning JavaScript dvigateli, Chrome ichidagi bilan bir xil. U kodni o’qiydi va mashina kodiga o’giradi. Lekin V8 faqat tilni biladi: o’zgaruvchi, funksiya, sikl. Fayl ochish yoki portni tinglashni u bilmaydi.
libuv — C tilida yozilgan kutubxona. Operatsion tizim bilan gaplashish shu yerda: fayl, tarmoq, vaqt, oqimlar.
Node.js — shu ikkisini bir-biriga ulab, ustidan JavaScript orqali foydalanish imkonini beradigan qatlam.
Nima uchun serverda qulay
Server ishining katta qismi kutishdan iborat: bazadan javob kutish, fayl o’qilishini kutish, boshqa API’dan javob kutish.
Ko’p tillarda har bir so’rovga alohida oqim (thread) ajratiladi va o’sha oqim kutib turadi. Ming so’rov — ming oqim, har biri xotira yeydi.
Node.js boshqacha ishlaydi. U bitta asosiy oqimda ishlaydi va kutish paytida bo’sh turmaydi: so’rovni operatsion tizimga topshiradi, javob kelguncha boshqa ishni bajaradi, javob kelganda esa qaytib kelib davom ettiradi.
Shuning uchun Node.js kutish ko’p bo’lgan joyda kuchli.
Qayerda ishlatiladi
- REST API va mikroservislar
- real vaqt ilovalari: chat, bildirishnoma, WebSocket
- CLI — terminal uchun utilitalar
- frontend uchun asboblar: Vite, Webpack, ESLint — hammasi Node ustida
Qayerda mos emas
Og’ir hisob-kitoblar: video kodlash, katta matematika, rasmga ishlov berish. Bunday ishda protsessor uzoq band bo’ladi, bitta oqim esa shu paytda hech kimga javob bera olmaydi — butun server to’xtab qoladi.
Bunday vazifalar uchun Node.js’da alohida yechimlar bor (worker threads, alohida servis), lekin standart holatda bu uning kuchli tomoni emas.
Keyingi maqolada
Node.js’ni nvm orqali o’rnatamiz, birinchi skriptni ishga tushiramiz va terminaldan argument qabul qilishni ko’ramiz.