Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Что такое Express

Express — небольшой веб-фреймворк для Node.js. Он принимает HTTP-запросы и помогает быстро ответить на них: связывает адреса с функциями, разбирает данные запроса и отправляет ответ в нужном формате. Курс написан для Express 5 и Node.js 22 или новее с ES-модулями (import и export).

Сервер без Express

В Node.js есть встроенный модуль node:http. На нём можно написать сервер, но всю работу придётся делать вручную:

// server.js
import http from 'node:http';
 
const server = http.createServer((req, res) => {
  if (req.method === 'GET' && req.url === '/posts') {
    res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
    res.end('Список статей');
    return;
  }
 
  res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' });
  res.end('Не найдено');
});
 
server.listen(3000);

Каждый адрес — ещё одна ветка if, заголовки выставляются руками, а тело POST-запроса нужно собирать по кусочкам из потока.

Тот же сервер на Express

// server.js
import express from 'express';
 
const app = express();
 
app.get('/posts', (req, res) => {
  res.send('Список статей');
});
 
app.listen(3000);

Маршрут описан одной строкой, заголовки Express выставит сам, а на неизвестный адрес ответит страницей 404.

Что даёт Express

ВозможностьЧто это значит
МаршрутыАдрес и HTTP-метод связываются с функцией
ПараметрыЧасти адреса и строка запроса уже разобраны
MiddlewareОбщий код для многих запросов: журнал, вход, разбор тела
ОтветыГотовые методы для текста, JSON, перенаправлений, файлов
ШаблоныHTML-страницы собираются из шаблонов с данными

При этом Express не навязывает базу данных, структуру папок или способ авторизации — всё это выбирается отдельными пакетами.

Что будем делать

Через весь курс проходит один пример — блог со статьями и комментариями. Сначала это обычный сайт с HTML-страницами и формами, потом к нему добавятся база данных, вход пользователей и JSON API для других программ.

Курс рассчитан на тех, кто знает JavaScript: функции, объекты, промисы, async/await и модули. Если что-то из этого незнакомо, вернитесь к учебнику JavaScript.

Частая ошибка

Многие статьи в интернете написаны для Express 4. Большая часть кода совпадает, но есть различия: в Express 5 изменился синтаксис шаблонов адресов (звёздочка * теперь записывается как /*splat), а ошибки из асинхронных обработчиков перехватываются автоматически. Проверяйте версию в package.json и при сомнениях сверяйтесь с документацией Express 5.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.