Node.js nima va nega kerak
fetch darsida serverdan ma’lumot oldingiz. Lekin o’sha ma’lumotni kim beryapti? Shu paytgacha yozgan JavaScript kodingiz faqat brauzer ichida ishladi. Node.js aynan shu chegarani ochadi: JavaScript’ni brauzersiz, to’g’ridan-to’g’ri kompyuterda ishga tushiradi.
Muammo: brauzer JS serverni ko’tara olmaydi
Frontend va backend darsida ikki tomon borligini ko’rdik. Brauzerdagi JavaScript — frontend tomoni. U sahifani o’zgartiradi, tugma bosilishini kuzatadi, so’rov yuboradi.
Server tomonida esa boshqa ishlar kerak:
- diskdan fayl o’qish va yozish;
- tarmoqdan kelgan so’rovni qabul qilish (yuborish emas);
- ma’lumotlar bazasiga ulanish;
- kompyuter o’chmaguncha uzluksiz ishlab turish.
Brauzerdagi JavaScript bularning hech birini qila olmaydi. Sababi texnik cheklov emas — xavfsizlik. Agar ochgan har bir saytingiz diskdagi fayllarni o’qiy olsa, internetga kirish xavfli bo’lardi.
V8 — brauzerdan olib chiqilgan dvigatel
Brauzer JavaScript’ni o’zi tushunmaydi. Uning ichida dvigatel turadi: kodni o’qib, protsessor bajaradigan buyruqqa aylantiradigan dastur. Chrome’da bu dvigatel V8 deb ataladi.
Node.js’ning asosiy g’oyasi shundan chiqqan: V8 ni brauzerdan ajratib olib, ustiga operatsion tizim bilan ishlash imkoniyatlarini qo’shish.
| Qism | Nimani beradi |
|---|---|
| V8 | JavaScript kodini tushunadi va bajaradi |
| Node.js qo’shimchasi | Fayl, tarmoq, jarayon bilan ishlash |
| Natija | Serverda ishlaydigan JavaScript |
Shuning uchun const, map(), async/await — hammasi Node.js’da xuddi
brauzerdagidek ishlaydi. Farq tilda emas, atrofdagi imkoniyatlarda.
Nima mumkin, nima mumkin emas
Ikki muhitni yonma-yon qo’yamiz:
| Imkoniyat | Brauzer JS | Node.js |
|---|---|---|
const, funksiya, massiv, obyekt |
Bor | Bor |
document, window (sahifa) |
Bor | Yo’q |
| Tugma bosilishini kuzatish | Bor | Yo’q |
| Diskdan fayl o’qish | Yo’q | Bor |
| Tarmoq so’rovini qabul qilish | Yo’q | Bor |
| Tarmoqqa so’rov yuborish | Bor | Bor |
| Ma’lumotlar bazasiga ulanish | Yo’q | Bor |
Jadvaldagi eng muhim qator — oxirgidan ikkinchisi. Brauzer so’rov yuboradi, Node.js so’rovni qabul qiladi. Express bo’limida siz aynan qabul qiladigan tomonni yozasiz.
Node.js nimalarda ishlatiladi
Node.js faqat sayt serveri uchun emas:
- Web server va API — bizning bo’lim shu haqda;
- Vositalar — kod yig’uvchi va tekshiruvchi dasturlar Node.js’da yozilgan;
- Skriptlar — fayllarni qayta nomlash, ma’lumot ko’chirish;
- Botlar — Telegram yoki Discord uchun.
npm buyrug’ini terminalda ishlatganingizda ham aslida Node.js ishlaydi.
Nega server uchun JavaScript
Node.js’dan oldin frontend’chi JavaScript, backend’chi PHP yoki Python yozardi. Bitta jamoada ikki xil til, ikki xil fikrlash.
Node.js bu devorni pasaytirdi:
- Bitta til — frontend va backend uchun bir xil sintaksis;
- Umumiy kod — tekshirish qoidalarini ikki tomonda ishlatish mumkin;
- Bir xil format — JSON JavaScript obyektiga juda yaqin.
Node.js qanday so’rovlarni ko’taradi
Node.js bitta oqimda ishlaydi — bir vaqtda bitta kod qatorini bajaradi. Shunga qaramay ko’p foydalanuvchiga xizmat qila oladi.
Sabab — kutish paytida bo’sh turmaslik. Bazadan javob kutilayotganda Node.js qotib qolmaydi, keyingi so’rovni oladi. Javob tayyor bo’lganda uzilgan joydan davom etadi.
Bu async/await darsidagi mantiqning o’zi. Brauzerda kutish paytida sahifa muzlab qolmaganidek, serverda ham bitta sekin so’rov qolganlarini to’xtatib qo’ymaydi.
Bu bo’limda nima qilasiz
Yo’l shunday quriladi:
- Node.js — JavaScript brauzersiz ishlaydi (shu dars);
- npm — tayyor kutubxonalarni loyihaga qo’shish;
- Express — server kodini qisqartiradigan framework;
- Birinchi server —
localhostda o’z saytingiz.
Har darsda kod o’z kompyuteringizda ishlaydi. Shuning uchun bu bo’limda brauzerda kod ishga tushiradigan tugma bo’lmaydi — uning o’rniga har buyruqning kutilgan natijasi ko’rsatiladi, siz o’zingiznikini solishtirasiz.
Amaliy mashq
Kod yozilmaydi — hozircha tushunchani mustahkamlaymiz:
- Oxirgi yozgan JavaScript kodingizni oching va undagi
documentyokiwindowishlatilgan qatorlarni belgilang — Node.js’ga ko’chirilsa, aynan shular ishlamaydi. - Yuqoridagi taqqoslash jadvaliga qarab aniqlang: “foydalanuvchi yuklagan rasmni diskka saqlash” qaysi tomonning ishi?
- Sevimli saytingizni oching va taxmin qiling — qaysi qismi brauzerda, qaysi qismi serverda hisoblanadi?
- Server nima darsidagi to’rt qadamni eslang va Node.js ularning qaysi birini bajarishini ayting.
- Node.js’ni o’z kompyuteringizga o’rnating: nodejs.org saytidan LTS belgili versiyani tanlang.
- Terminalni ochib
node --versionvanpm --versionbuyruqlarini bering — ikkalasi ham raqam qaytarishi kerak.
6-qadam keyingi darsning shartidir: ikki buyruq ham versiya ko’rsatmasa, undan nariga o’tilmaydi.
Kutilgan natija taxminan shunday bo’ladi (raqamlar farq qilishi mumkin):
v22.11.0
10.9.0
Qisqacha xulosa
- Node.js — JavaScript’ni brauzerdan tashqarida bajaradigan muhit, alohida til emas.
- Ichida Chrome’ning V8 dvigateli ishlaydi, ustiga fayl va tarmoq imkoniyatlari qo’shilgan.
- Brauzerda
documentbor, Node.js’da yo’q; Node.js’da fayl o’qish bor, brauzerda yo’q. - Brauzer so’rov yuboradi, Node.js so’rovni qabul qiladi — server yozishning asosi shu.
- Node.js bitta oqimda ishlaydi, lekin kutish paytida bo’sh turmaydi.
- Til bitta bo’lgani uchun frontend bilimingiz backend’da ham ishlaydi.
Keyingi darsda Node.js o’rnatish va REPL — muhitni kompyuteringizga qo’yish va birinchi faylni ishga tushirish.