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;
httpga 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:
- Yuqoridagi
server-http.jsfaylini yaratib,node server-http.jsbilan ishga tushiring; - Brauzerda
/,/aboutva/api/usersmanzillarini ochib ko’ring; - Mavjud bo’lmagan manzilni oching —
Sahifa topilmadichiqishi kerak; /aboutshartidagireturnni olib tashlang, serverni qayta ishga tushiring va terminalda qanday xato chiqishini o’qing;- Ikki fayldagi marshrut qismini yonma-yon qo’yib, qancha qator qisqarganini sanang;
/contactmanzilini 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
httpmoduli bilan ham yoziladi — Express shart emas, lekin qulay. - Sof
httpda 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
httpustida 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.