← Назад к вопросам

Из чего состоит Express.js

2.0 Middle🔥 241 комментариев
#Фреймворки и библиотеки

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Из чего состоит Express.js

Express.js — это минималистичный, но мощный фреймворк для создания веб-приложений и API на Node.js. Его архитектура базируется на нескольких ключевых компонентах, которые работают вместе для обработки HTTP запросов.

Основные компоненты Express.js

1. Application объект (app)

Это главный объект Express, который создается при инициализации:

const express = require("express");
const app = express();

// app имеет методы для:
// - определения маршрутов
// - подключения middleware
// - конфигурации приложения

Объект app содержит всю логику приложения и настройки.

2. Middleware

Это функции, которые обрабатывают запросы и передают управление дальше через стек обработки:

// Middleware имеет сигнатуру (req, res, next)
app.use((req, res, next) => {
  console.log("Request получен");
  next(); // передать управление следующему middleware
});

// Встроенные middleware
app.use(express.json());        // парсинг JSON
app.use(express.urlencoded()); // парсинг form data
app.use(express.static("public")); // статические файлы

Middleware выполняются последовательно в порядке регистрации.

3. Router

Это объект для организации маршрутов. Можно создавать отдельные роутеры для разных частей приложения:

const router = express.Router();

// Определение маршрутов в роутере
router.get("/users", (req, res) => {
  res.json({ users: [] });
});

router.post("/users", (req, res) => {
  res.status(201).json({ id: 1 });
});

// Подключение роутера к приложению
app.use("/api", router); // Результат: GET /api/users

4. Request объект (req)

Объект, который содержит информацию о входящем запросе:

app.get("/users/:id", (req, res) => {
  console.log(req.params.id);      // параметры маршрута
  console.log(req.query.sort);     // query параметры
  console.log(req.body);           // тело запроса (JSON)
  console.log(req.headers);        // заголовки
  console.log(req.method);         // HTTP метод
  console.log(req.url);            // URL
});

5. Response объект (res)

Объект для отправки ответа клиенту:

app.get("/", (req, res) => {
  res.status(200);                    // установить статус
  res.json({ message: "Hello" });    // отправить JSON
  res.send("text");                   // отправить текст
  res.redirect("/new-url");           // редирект
  res.render("template", {data});     // рендерить шаблон
});

6. Route Handler (Обработчик маршрута)

Это функции, которые обрабатывают запросы к конкретным маршрутам:

// Простой handler
app.get("/", (req, res) => {
  res.send("Home page");
});

// Несколько handlers подряд
app.get("/posts/:id", 
  authenticate,     // middleware 1
  authorize,        // middleware 2
  (req, res) => {   // основной handler
    res.json({ post: "data" });
  }
);

7. Error Handler (Обработчик ошибок)

Специальный middleware с 4 параметрами для обработки ошибок:

// ВАЖНО: 4 параметра! (err, req, res, next)
app.use((err, req, res, next) => {
  console.error(err);
  res.status(500).json({ error: "Internal server error" });
});

// Должен быть последним в стеке middleware

8. Конфигурация приложения

Express позволяет устанавливать различные параметры:

app.set("view engine", "ejs");      // engine для шаблонов
app.set("views", "./views");        // папка с шаблонами
app.set("port", 3000);              // порт
app.enable("trust proxy");          // доверять proxy headers

const port = app.get("port");

Архитектурный поток

Запрос в Express проходит через цепочку:

HTTP Request
    ↓
Global Middleware (express.json, cors, etc)
    ↓
Route-specific Middleware
    ↓
Route Handler
    ↓
Send Response

Типичная структура приложения

const express = require("express");
const app = express();

// Конфигурация
app.use(express.json());
app.use(express.static("public"));

// Роутеры
const userRouter = require("./routes/users");
const postRouter = require("./routes/posts");
app.use("/api/users", userRouter);
app.use("/api/posts", postRouter);

// Error Handler (в конце!)
app.use((err, req, res, next) => {
  res.status(500).json({ error: err.message });
});

// Запуск сервера
app.listen(3000, () => {
  console.log("Server running on port 3000");
});

Итоги

Express состоит из:

  • Application — главный объект приложения
  • Middleware — функции для обработки запросов
  • Router — организация маршрутов
  • Request/Response — объекты для работы с HTTP
  • Route Handlers — функции обработки маршрутов
  • Error Handler — специальный middleware для ошибок
  • Конфигурация — настройки приложения

Все эти компоненты работают вместе в виде middleware stack — цепочки, через которую проходит каждый запрос.

Из чего состоит Express.js | PrepBro