Express.js

Тема дорожной карты · Node.js

Express.js — наиболее широко используемый фреймворк для веб-приложений Node.js, предоставляющий минималистичный и гибкий набор HTTP-утилит и middleware, которые упрощают построение REST API и серверных веб-сервисов поверх JavaScript-среды выполнения Node.js. Express.js оборачивает встроенный модуль http более удобным API для определения маршрутов с помощью app.get(), app.post() и других методов HTTP-глаголов, парсинга тела запросов через express.json() и express.urlencoded(), а также отправки ответов через res.json(), res.send() и res.redirect(). Его npm-пакет (express) совместим с сотнями middleware-пакетов в экосистеме — включая helmet для заголовков безопасности, cors для кросс-доменных запросов, passport для аутентификации и multer для загрузки файлов — что делает Express.js высокорасширяемым. API express.Router() позволяет организовывать маршруты по модульному принципу, а паттерн с middleware для обработки ошибок с четырьмя аргументами централизует обработку ошибок во всём серверном приложении Node.js. Express.js остаётся де-факто стандартом для серверной разработки на JavaScript, несмотря на более новые альтернативы вроде Fastify или Koa, благодаря своей зрелости, размеру экосистемы и обилию существующих учебных материалов и совместимого с npm middleware.

Как это работает

Express.js — самый широко используемый Node HTTP-фреймворк: минималистичный, middleware-based, route-based. Запрос проходит через стек middleware-функций; каждая зовёт next() для передачи управления. app.get("/path", handler) регистрирует роут; app.use(middleware) монтирует middleware. Современные альтернативы: Fastify (быстрее, schema-based, JSON-first), Koa (духовный преемник Express, async-native), Hono (edge-runtime ready), NestJS (opinionated, decorator-based).

Когда применять

Express — для legacy-сервисов и быстрых прототипов; его доки и middleware-экосистема непревзойдены. Fastify — для новых performance-чувствительных API (2-3x throughput, встроенная schema-валидация). NestJS — для больших командных проектов с пользой от конвенций. Всегда добавляйте helmet, rate-limit, лимит размера body — у Express нет безопасных дефолтов. Валидируйте input (zod, ajv) до любой записи в БД.

Типичные ошибки

Ловушки Express.js: забытый response — запрос висит вечно (ставьте timeouts); express.json({limit: "100mb"}) (DoS-вектор); нет глобального error-handler (app.use((err, req, res, next) => ...)); не выставлен app.disable("x-powered-by") (fingerprinting); баги в порядке middleware (auth должен быть до handler). Прочтите Express security best practices один раз.

Связанные понятия

Полезные ресурсы