Гид по технологиям

Как создать веб‑сервер на Node.js и Express.js

5 min read Node.js Обновлено 02 Jan 2026
Создать веб‑сервер на Node.js и Express.js
Создать веб‑сервер на Node.js и Express.js

Кратко

Краткое руководство по созданию простого веб‑сервера на Node.js с использованием Express.js. Показываю установку, минимальный код server.js, тестирование локально, варианты альтернатив и базовые рекомендации по безопасности и развёртыванию.

Иллюстрация: логотип Node.js и пример кода сервера

Node.js стал одним из самых популярных решений для серверной разработки за последние годы. Он позволяет запускать JavaScript вне браузера — в командной строке и на серверах. Express.js — лёгкий веб‑фреймворк для Node.js, который упрощает работу с маршрутизацией и middleware. В этой статье пошагово разберём, как создать и запустить простой веб‑сервер, какие есть альтернативы и что учесть при тестировании и развёртывании.

Технологии и пакеты

Node.js — это runtime для JavaScript на базе движка V8 от Chrome. npm (Node Package Manager) управляет пакетами и зависимостями. Express.js — минималистичный фреймворк, который строится поверх встроенного модуля http и даёт упрощённый API для маршрутов и middleware.

Ключевые понятия (одна строка):

  • Node.js — выполняет JavaScript вне браузера.
  • npm — менеджер пакетов для установки библиотек.
  • Express.js — фреймворк для создания серверов и маршрутов.

Важно: Express.js не обязателен — можно использовать чистый модуль http, но Express ускоряет разработку.

Как начать: структура и установка

  1. Создайте папку проекта и перейдите в неё:
mkdir my-node-server
cd my-node-server
  1. Инициализируйте пакет npm (создаст package.json):
npm init -y
  1. Установите Express.js:
npm install express

Команда установки express через npm в терминале

После установки откройте папку в вашем редакторе и создайте файл server.js.

Простой server.js — минимальный рабочий пример

Создайте файл server.js и вставьте следующий код. Он показывает корневой маршрут и динамический маршрут по имени:

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

// Корневой маршрут
app.get('/', (req, res) => {
  res.send('

Hello World

'); }); // Динамический маршрут: /имя app.get('/:name', (req, res) => { res.send(`

Welcome to ${req.params.name}!

`); }); // Запуск сервера на порту 5000 app.listen(5000, () => console.log('Server is running on port 5000'));

Пояснения по коду:

  • express() создаёт приложение Express.
  • app.get(path, handler) регистрирует обработчик для GET‑запросов.
  • req.params — параметры маршрута (для /:name это поле name).
  • res.send() отправляет текст или HTML в ответ.
  • app.listen(port, callback) начинает прослушивание порта.

Пример server.js в редакторе кода

Запуск и тестирование локально

Чтобы запустить сервер, выполните в каталоге проекта:

node server.js

Вы увидите сообщение в консоли, если всё прошло успешно.

Сервер Express работает в терминале

Откройте в браузере http://localhost:5000 — вы увидите ответ корневого маршрута.

Демонстрация корневого маршрута в браузере

Перейдите по адресу http://localhost:5000/muo — и увидите динамический маршрут с именем muo.

Демонстрация динамического маршрута в браузере

Чтобы остановить сервер, нажмите Ctrl+C (Windows/Linux) или Cmd+C (macOS).

Развитие проекта: что можно добавить дальше

  • Обработка других HTTP‑методов: app.post(), app.put(), app.delete().
  • Парсинг тела запроса: npm install body-parser или встроенный express.json().
  • Статические файлы: app.use(express.static(‘public’)).
  • Шаблонизаторы: EJS, Pug, Handlebars для генерации HTML на сервере.

Альтернативы и когда их выбирать

  • Встроенный модуль http (node): когда нужен минимальный footprint и контроль на низком уровне. Простой пример:
const http = require('http');
const server = http.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello from native http');
});
server.listen(5000);
  • Fastify: лучше подходит для высокопроизводительных сервисов с низкой задержкой.
  • Koa: более современный, использует async/await и middleware как асинхронные цепочки.

Когда не нужен Express: в маленьких демонстрациях или мик‑утилитах без маршрутизации и middleware.

Ментальные модели (как думать о сервере)

  • Маршрутизация как сопоставление путей → обработчиков.
  • Middleware как конвейер: каждый middleware получает req, res и может передать дальше.
  • Состояние сервера — не храните чувствительные или изменяемые данные в памяти приложения; используйте внешние хранилища (БД, кеш).

Мини‑методология разработки (шаблон действий)

  1. Инициировать проект (npm init).
  2. Установить зависимости (express и необходимые middleware).
  3. Создать минимальный server.js и убедиться, что сервер запустился.
  4. Добавить маршруты и юнит‑тесты для ключевых обработчиков.
  5. Подготовить конфигурацию для окружений (env‑переменные).
  6. Настроить процесс‑менеджер (pm2) и reverse proxy (nginx) для продакшена.

Чеклист ролей (Developer / DevOps)

  • Developer:

    • Написать читаемые маршруты и middleware.
    • Добавить логирование ошибок.
    • Написать тесты для основных маршрутов.
  • DevOps:

    • Настроить переменные окружения и secrets.
    • Настроить process manager (pm2, systemd).
    • Настроить обратный прокси (nginx) и SSL.

Критерии приёмки

  • Сервер запускается командой node server.js и отвечает на GET / со статусом 200.
  • Динамический маршрут /:name возвращает корректный HTML с указанным именем.
  • Логи ошибок записываются в файл или систему логирования.
  • Конфиденциальные данные не хранится в исходниках (используются env).

Отладка и тестовые команды

Проверка базовой доступности с помощью curl:

curl -i http://localhost:5000/
curl -i http://localhost:5000/vasya

Если порт занят, используйте другой порт или найдите процесс:

lsof -i :5000
kill 

Безопасность и базовые рекомендации по харднингу

  • Не возвращайте стеки ошибок в ответах клиенту.
  • Используйте helmet для заголовков безопасности: npm install helmet и app.use(require(‘helmet’)()).
  • Ограничьте число запросов (rate limiting) для предотвращения DDoS.
  • Валидация входных данных — критична для предотвращения инъекций.
  • Храните секреты в переменных окружения, используйте менеджеры секретов в продакшене.

Развёртывание — краткая дорожная карта

  1. Подготовьте package.json с командой запуска (например, “start”: “node server.js”).
  2. Используйте process manager (pm2 или systemd) для перезапуска при сбоях.
  3. Настройте nginx как reverse proxy и SSL (Let’s Encrypt).
  4. Настройте CI/CD для автоматического тестирования и деплоя.

Совместимость и миграция версий

  • Работайте на поддерживаемой LTS‑версии Node.js. Новые версии меняют поведение некоторых API.
  • Перед обновлением Node проверяйте зависимости в package.json и их совместимость.

Типичные ошибки и как их исправить

  • «Error: Cannot find module ‘express’» — убедитесь, что вы установили пакет и запускаете сервер в каталоге проекта.
  • Сервер не отвечает — проверьте, что вы запустили node server.js, и что порт не занят другим процессом.
  • Не видны изменения в коде — в разработке используйте nodemon для автоперезапуска: npm install -g nodemon и запуск nodemon server.js.

Краткое резюме

Node.js + Express.js — быстрый способ сделать рабочий HTTP‑сервер. Начните с простого server.js, затем добавляйте маршруты, middleware, тесты и настройки безопасности. Для продакшена используйте process manager и обратный прокси.

Важно: выбирайте инструмент под задачу — для максимальной производительности рассмотрите Fastify или пишите на чистом http, если нужен низкоуровневый контроль.

Полезные команды и шаблоны (cheatsheet)

  • Инициализация: npm init -y
  • Установка express: npm install express
  • Запуск: node server.js или nodemon server.js
  • Перезапуск при сбое: pm2 start server.js –name my-app

Если нужно, могу подготовить готовый шаблон проекта с пакетом package.json, настройкой nodemon и примером nginx-конфига для быстрого развёртывания.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как изменить иконку Windows Forms приложения
Разработка

Как изменить иконку Windows Forms приложения

Как включить моно звук в Windows и VLC
Аудио

Как включить моно звук в Windows и VLC

Windows в неподдерживаемом каталоге — решения
Windows

Windows в неподдерживаемом каталоге — решения

Желтый треугольник на диске Windows — причины и исправление
Windows

Желтый треугольник на диске Windows — причины и исправление

Исключить папки из поиска Windows
Windows

Исключить папки из поиска Windows

Multiversus зависает на «Ожидание игры» — исправление
Игровая поддержка

Multiversus зависает на «Ожидание игры» — исправление