Express nima va nega kerak

Node.js’da server yozish uchun tashqi paket shart emas — ichida http moduli bor. Unda nega deyarli hamma Express ishlatadi? Javobni gapirib emas, bir xil vazifani ikki marta yozib ko’ramiz.

Vazifa

Uchta manzilga javob beradigan server kerak:

Manzil Javob
/ Bosh sahifa matni
/about Biz haqimizda matni
/api/users Foydalanuvchilar ro’yxati, JSON ko’rinishida

Boshqa har qanday manzilga — 404 xatosi. Shart oddiy, lekin farqni ko’rsatish uchun yetarli.

1-yo’l: sof http moduli

server-http.js faylini yarating:

const http = require("http");

const users = [
  { id: 1, name: "Aziz" },
  { id: 2, name: "Dilnoza" },
];

const server = http.createServer((request, response) => {
  // Manzilni va usulni o'zimiz ajratib olamiz
  const url = request.url;
  const method = request.method;

  if (url === "/" && method === "GET") {
    response.writeHead(200, { "Content-Type": "text/plain; charset=utf-8" });
    response.end("Bosh sahifa");
    return;
  }

  if (url === "/about" && method === "GET") {
    response.writeHead(200, { "Content-Type": "text/plain; charset=utf-8" });
    response.end("Biz haqimizda");
    return;
  }

  if (url === "/api/users" && method === "GET") {
    response.writeHead(200, { "Content-Type": "application/json; charset=utf-8" });
    response.end(JSON.stringify(users));
    return;
  }

  // Hech biriga to'g'ri kelmadi
  response.writeHead(404, { "Content-Type": "text/plain; charset=utf-8" });
  response.end("Sahifa topilmadi");
});

server.listen(3000);

Ishga tushirish:

node server-http.js

Brauzerda http://localhost:3000/about ni oching — Biz haqimizda chiqadi. Kod ishlaydi. Endi undagi noqulayliklarni sanaymiz.

Sof http nimasi bilan qiyin

Har javobda sarlavha qo’lda yoziladi. writeHead va Content-Type to’rt marta takrorlandi. Bittasini unutsangiz, brauzer matnni noto’g’ri kodlashda ko’rsatadi.

JSON qo’lda aylantiriladi. JSON.stringify va to’g’ri Content-Type — ikkalasi ham sizning zimmangizda.

Marshrutlar if zanjiriga aylanadi. Uchta manzilda ham uzun. Yigirmata manzilda bu kod o’qib bo’lmas holga keladi.

return unutilsa, xato chiqadi. Har if oxiridagi return ni tashlab yuborsangiz, kod pastga tushib davom etadi va ikkinchi javob yuborishga urinadi.

Manzil ichidagi qiymatni ajratish qiyin. /users/5 dan 5 raqamini olish uchun matnni bo’lib, tekshirib, songa aylantirish kerak.

2-yo’l: Express

Endi xuddi shu vazifa Express bilan. server-express.js:

const express = require("express");

const app = express();

const users = [
  { id: 1, name: "Aziz" },
  { id: 2, name: "Dilnoza" },
];

app.get("/", (request, response) => {
  response.send("Bosh sahifa");
});

app.get("/about", (request, response) => {
  response.send("Biz haqimizda");
});

app.get("/api/users", (request, response) => {
  response.json(users);
});

app.listen(3000);

Natija bir xil, kod esa deyarli ikki barobar qisqa. Muhimi hajm emas — nima yo’qolgani.

Nima soddalashdi

Vazifa Sof http Express
Manzilni tekshirish if (url === "/about") app.get("/about", ...)
Usulni tekshirish request.method ni qo’lda app.get, app.post
Matn yuborish writeHead + end response.send()
JSON yuborish stringify + sarlavha response.json()
Content-Type Qo’lda yoziladi O’zi qo’yiladi
404 javobi Oxirgi else O’zi ishlaydi
return unutish xavfi Bor Yo’q

response.json(users) bitta qatorda uch ish qiladi: obyektni JSON matniga aylantiradi, Content-Type ni qo’yadi va javobni yuboradi.

Framework nima

Bu so’z darslarda ko’p uchraydi, shuning uchun aniqlashtiramiz.

Farqni Express misolida ko’rish mumkin. Siz app.get() ichiga funksiya yozib qo’yasiz, lekin uni o’zingiz chaqirmaysiz. So’rov kelganda Express qaysi funksiya mos kelishini aniqlaydi va uni chaqiradi.

Nega aynan Express

Node.js uchun framework ko’p. Express boshlash uchun qulay, chunki:

  • Kichik — o’nga yaqin asosiy tushuncha, hammasi shu bo’limga sig’adi;
  • http ga yaqin — parda ortida nima bo’layotgani yashirilmaydi;
  • Keng tarqalgan — savolingizga javob topish oson;
  • Erkin — papka tuzilishini o’zingiz tanlaysiz.

Oxirgi band ikki tomonlama. Express sizga qattiq qoida bermaydi — demak tartibni o’zingiz o’ylab topasiz.

Express nimani qilmaydi

Kutilmagan narsani kutmaslik uchun chegarani aniq qo’yamiz. Express o’zi bilan quyidagilarni olib kelmaydi:

  • ma’lumotlar bazasi — alohida paket tanlanadi;
  • foydalanuvchi kirishi va parol tekshiruvi;
  • HTML sahifa tayyorlash (shablon paketi ulanadi);
  • ma’lumot to’g’riligini tekshirish.

Bularning har biri uchun paket bor. Express faqat so’rov-javob zanjirini boshqaradi.

Qaysi birini tanlash

Holat Tanlov
Bitta manzilli kichik skript Sof http yetarli
Sayt yoki API Express
Node.js ichida nima borligini o’rganish Sof http foydali

Amalda deyarli hamma loyiha ikkinchi qatorga tushadi.

Amaliy mashq

Ikki yondashuvni o’z ko’zingiz bilan solishtiring:

  1. Yuqoridagi server-http.js faylini yaratib, node server-http.js bilan ishga tushiring;
  2. Brauzerda /, /about va /api/users manzillarini ochib ko’ring;
  3. Mavjud bo’lmagan manzilni oching — Sahifa topilmadi chiqishi kerak;
  4. /about shartidagi return ni olib tashlang, serverni qayta ishga tushiring va terminalda qanday xato chiqishini o’qing;
  5. Ikki fayldagi marshrut qismini yonma-yon qo’yib, qancha qator qisqarganini sanang;
  6. /contact manzilini qo’shishni ikkala usulda rejalashtiring: qaysi birida nechta qator yozish kerak?

4-qadam eng foydalisi: Express aynan qaysi xatodan saqlashini xato matnining o’zidan ko’rasiz.

Serverni to’xtatish uchun terminalda Ctrl + C bosiladi.

Qisqacha xulosa

  • Node.js’da server sof http moduli bilan ham yoziladi — Express shart emas, lekin qulay.
  • Sof http da sarlavha, JSON aylantirish va marshrut tekshiruvi qo’lda yoziladi.
  • Express takrorlanadigan ishni o’z zimmasiga oladi: app.get(), response.send(), response.json().
  • Framework — sizning kodingizni chaqiradigan asos; kutubxona esa siz chaqiradigan vosita.
  • Express http ustida ishlaydi, uni yashirmaydi.
  • Baza, kirish tekshiruvi va shablon Express bilan kelmaydi — ular alohida paket.

Keyingi darsda birinchi server — Express’ni o’rnatib, localhost da ishga tushiramiz.

Bu dars foydali bo'ldimi?

marta ko'rildi