Node.js
Коротко
Программа, которая выполняет JavaScript вне браузера: на сервере, в консоли, в сборщиках фронтенда. Построена на движке V8 из Chrome и асинхронной модели ввода-вывода.
Что такое «Node.js»
Долгое время JavaScript жил только в браузере. В 2009 году Райан Дал взял движок V8, добавил к нему доступ к файлам, сети и процессам — и язык смог работать на сервере. Так появилась среда выполнения, на которой один разработчик может писать и интерфейс, и серверную часть на одном языке. Вместе с ней вырос npm — реестр пакетов, где сегодня лежат миллионы пакетов.
Событийный цикл простыми словами
Классический PHP-сервер на каждый запрос выделяет отдельный процесс, который ждёт ответа базы и ничего больше не делает. Node.js устроен иначе: основной код выполняется в одном потоке, а долгие операции — чтение файла, запрос к API, обращение к базе — отдаются системе. Пока они идут, поток обслуживает другие запросы, а когда данные готовы, вызывается заранее переданная функция. Поэтому Node.js хорошо держит тысячи одновременных соединений: чаты, веб-сокеты, прокси для API.
Обратная сторона — тяжёлые вычисления. Если в обработчике запроса долго пересчитывать большой массив или сжимать картинку, остановятся все остальные пользователи. Такие задачи выносят в отдельные потоки или сервисы.
Минимальный сервер
const http = require('node:http');
http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
res.end('Привет из Node.js');
}).listen(3000);
Команда node server.js запускает сервер на порту 3000. В реальных проектах поверх встроенного модуля обычно берут фреймворк вроде Express или Fastify.
Node.js рядом с сайтом на PHP
Даже если сайт работает на WordPress или Битриксе, Node.js часто нужен на этапе сборки: сборщики, компиляторы стилей и минификаторы скриптов запускаются через npm или Yarn. На боевом сервере его может и не быть вовсе. Как отдельное серверное приложение Node.js встречается в интеграциях, сервисах уведомлений и ботах. В моих проектах на нём часто живут Telegram-боты, которые обмениваются данными с сайтом через API.

