1. Основы Node.js: создание HTTP-сервера и работа с файловой системой
Основы Node.js: создание HTTP-сервера и работа с файловой системой
Добро пожаловать в курс «Backend на Node.js». Мы начинаем погружение в серверную разработку, минуя готовые фреймворки вроде Express, чтобы понять, как всё устроено «под капотом». В этой статье мы разберём фундамент любого веб-приложения: как принять запрос от пользователя, обработать его и отправить ответ, а также как работать с файлами на сервере.
Что такое Node.js и зачем он нужен?
Node.js — это не язык программирования и не фреймворк. Это среда выполнения (runtime environment) для JavaScript, построенная на движке V8 от Google Chrome. Она позволяет запускать JavaScript-код вне браузера: на сервере, локальном компьютере или IoT-устройствах.
Ключевая особенность Node.js — это асинхронная модель ввода-вывода, управляемая событиями. В отличие от традиционных многопоточных серверов (например, на базе Apache/PHP), где каждый новый запрос создает отдельный поток, потребляющий память, Node.js работает в одном потоке.
> Node.js позволяет разработчикам использовать JavaScript для создания серверного кода, хотя традиционно этот язык использовался в браузере для создания клиентского кода. > > DigitalOcean
Почему это важно?
Представьте, что ваш сервер должен прочитать файл с диска. В блокирующей (синхронной) модели сервер «зависнет» и не сможет обрабатывать другие запросы, пока файл не будет прочитан. В Node.js операция чтения отправляется системе, а сервер продолжает принимать новые запросы. Когда файл будет прочитан, сработает событие (callback), и сервер вернётся к обработке результата.
Модуль HTTP: Сердце сервера
В Node.js встроен мощный модуль http, который позволяет создавать веб-серверы без установки сторонних зависимостей. Для начала работы его необходимо импортировать.
Создание простейшего сервера
Рассмотрим базовый пример создания сервера, который отвечает «Hello World» на любой запрос.
Этот код делает следующее:
path.extname.Content-Type.ENOENT (Error NO ENTry), которая означает, что файл не существует (404).Такой подход лежит в основе работы многих статических серверов, хотя в продакшене для этих целей часто используют Nginx или специальные модули Express.
> Пример. Вот так выглядит статический сервер на Node.js... var contentType = mimeTypes[extname] || "application/octet-stream"; > > MDN
Итоги
Мы разобрали основы создания веб-сервера на чистом Node.js. Эти знания необходимы для понимания того, как работают высокоуровневые фреймворки.
http позволяет создавать сервер, слушать порты и обрабатывать входящие запросы (req) и исходящие ответы (res).if/else) и проверку req.url и req.method.fs используется для работы с файлами. Для серверов критически важно использовать асинхронные методы (fs.readFile), чтобы не блокировать поток выполнения.