Express — это минималистичный фреймворк для Node.js, который упрощает создание HTTP-серверов и веб-приложений. Он предоставляет удобные абстракции над низкоуровневым модулем http, позволяя быстрее определять маршруты, подключать middleware, обрабатывать файлы, параметры, заголовки и ошибки. На Express строят REST API, серверный рендеринг страниц и backend для SPA/мобильных приложений.
Ускоряет разработку благодаря готовым примитивам: app, Router, req/res, next.
Не навязывает архитектуру — вы сами выбираете слои и структуру каталогов.
Как работают серверные приложения и основные концепции
Серверное приложение «слушает» порт и принимает входящие запросы. Каждый запрос проходит через цепочку middleware — маленьких функций, которые могут читать/изменять req (запрос), res (ответ), либо завершать обработку, либо передавать управление дальше через next(). Когда найден подходящий маршрут, вызывается его обработчик, формирующий ответ.
Приложение (app) — центральный объект, к которому «подвешивают» middleware и маршруты.
Middleware — функции пред- и пост-обработки: парсинг тела, аутентификация, логирование, ограничения скорости.
Маршрутизатор (Router) — модуль для группировки маршрутов по домену (например, /users).
Express не навязывает структуру, но практично разделять слои и домены. Ниже — опорный шаблон для REST API со слоями контроллеров, сервисов, репозиториев и утилит.
Middleware принимает (req, res, next). Оно может завершить ответ или передать управление дальше вызовом next(). Порядок подключения влияет на поведение.
// src/app.ts (подключение обработчика ошибок в самом конце)
import { errorMiddleware } from "./middlewares/error.middleware";
// ... после всех маршрутов и middleware
app.use(errorMiddleware);
Парсинг тела, статические файлы, CORS
Частые утилиты: express.json() для JSON-тел, express.urlencoded() для форм, express.static() для статики, пакет cors для CORS.
// src/app.ts (фрагмент: парсинг, статика, CORS)
import cors from "cors";
import path from "path";
import express from "express";
app.use(cors());
app.use(express.json({ limit: "1mb" }));
app.use(express.urlencoded({ extended: true }));
app.use("/static", express.static(path.join(process.cwd(), "public")));
Валидация входных данных
Проверяйте параметры, req.body и req.query до бизнес-логики. Можно использовать express-validator или zod/yup.