Express nima? Nima uchun kerak, boshqa frameworklar bilan farqi

~15 daq · Express · Kirish va Asoslar

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