[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…

zikrulloh3 daqiqa o'qishYangilangan:

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:

  1. Asos — o’rnatish, modullar, npm va package.json
  2. Node qanday ishlaydi — Event Loop, async/await, xatolar, EventEmitter
  3. 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.