Express nima? Nima uchun kerak, boshqa frameworklar bilan farqi
Muammodan boshlaylik
Node.js da HTTP server yozish mumkin — buni 20-darsda ko'rdik:
const http = require('http');
const server = http.createServer((req, res) => {
if (req.method === 'GET' && req.url === '/users') {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify([{ id: 1, name: 'Ali' }]));
} else if (req.method === 'POST' && req.url === '/users') {
let body = '';
req.on('data', chunk => body += chunk);
req.on('end', () => {
const user = JSON.parse(body);
res.writeHead(201, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(user));
});
} else {
res.writeHead(404);
res.end('Not Found');
}
});
server.listen(3000);
Bu ishlaydi. Lekin muammo bor: 10 ta endpoint bo'lsa — 10 ta if/else. 50 ta bo'lsa — 50 ta. Body ni har safar qo'lda o'qish. Header larni har safar qo'lda yozish. Xatolarni har safar qo'lda boshqarish.
Bu — boilerplate (takroriy, zerikarli kod). Express aynan shu takroriy ishlarni olib tashlaydi.
Express nima?
Express — Node.js uchun minimal web framework. "Minimal" degani — u sizga faqat kerakli narsalarni beradi, qolganini o'zingiz hal qilasiz.
Yuqoridagi kod Express bilan:
const express = require('express');
const app = express();
app.use(express.json()); // body ni avtomatik parse qilish
app.get('/users', (req, res) => {
res.json([{ id: 1, name: 'Ali' }]);
});
app.post('/users', (req, res) => {
res.status(201).json(req.body);
});
app.listen(3000);
Xuddi shu natija — 4 baravar kam kod. if/else yo'q, body ni qo'lda o'qish yo'q, header larni qo'lda yozish yo'q.
Express nima beradi?
Express ning asosiy uchta narsasi bor:
Routing — URL va HTTP metodga qarab so'rovni to'g'ri joyga yo'naltirish. app.get('/users', ...), app.post('/orders', ...) — har biri o'z joyida.
Middleware — so'rov va javob o'rtasida ishlaydigan funksiyalar zanjiri. Logging, autentifikatsiya, body parsing, xato boshqarish — bularning hammasi middleware. Bir marta yoziladi, hamma joyda ishlaydi.
Response metodlari — res.json(), res.send(), res.status(), res.redirect() — javob yuborishni osonlashtiradi.
Express nima emas?
Express minimal — bu uning kuchi, lekin ba'zan cheklov.
Express o'zi bermaydi:
- Ma'lumotlar bazasi bilan ishlash (siz tanlaysiz: pg, mongoose, prisma)
- Autentifikatsiya (siz yozasiz yoki passport.js ishlatiladi)
- Validatsiya (zod, joi ishlatiladi)
- Fayl tuzilishi (siz hal qilasiz)
Bu yaxshi narsa — siz har bir qismni o'zingiz tanlaysiz. Lekin yangi boshlovchilar uchun qiyin — nima tanlashni bilmaydi.
NestJS esa aksincha — hamma narsani o'zi beradi, lekin o'rganish qiyinroq.
Boshqa frameworklar bilan farqi
Express vs Fastify:
Fastify — Express ning tezroq versiyasi. Benchmark larda 2-3 baravar tezroq. API Express ga o'xshash, lekin bir oz boshqacha. Yangi loyihalarda Fastify yaxshi tanlov, lekin Express ekotizimi kattaroq — ko'proq kutubxona, ko'proq Stack Overflow javobi.
Express vs NestJS:
NestJS — Express ustiga qurilgan. Ya'ni NestJS ichida Express ishlaydi. NestJS katta loyihalar uchun — tuzilma, DI, decorator lar bilan. Express kichik va o'rta loyihalar uchun — tez boshlash, erkinlik.
Express: erkin, minimal, tez boshlash
NestJS: tartibli, to'liq, katta loyihalar
Fastify: tez, zamonaviy, Express ga o'xshash
Express vs Koa:
Koa — Express ning yaratuvchilari tomonidan yozilgan yangi framework. async/await ni birinchi qo'llab-quvvatlagan. Lekin ekotizimi kichikroq.
Kim Express ishlatadi?
Express "kichik loyihalar uchun" emas:
- IBM — enterprise ilovalar
- Uber — ba'zi microservicelar
- Twitter — API qismlari
- Accenture — korporativ ilovalar
npm da haftasiga 100 million dan ortiq yuklab olinadi. Eng ko'p ishlatiladigan Node.js framework.
Xulosa
Express — Node.js da web server yozishni osonlashtiruvchi minimal framework. Routing, middleware va response metodlarini beradi, qolganini siz tanlaysiz.
Node.js ning http modulidan farqi — takroriy kod yo'q, tuzilma bor, ekotizim katta.
NestJS dan farqi — minimal va erkin, NestJS esa to'liq va tartibli.
Keyingi dars
2-dars: O'rnatish, birinchi server, qanday ishlaydi