
Node.js позволяет создавать серверные приложения на JavaScript и напрямую взаимодействовать с HTML-файлами. Для начала важно убедиться, что установлена актуальная версия Node.js – рекомендуем использовать LTS-ветку, например, 20.x. Проверить установку можно через команду node -v, а npm – через npm -v.
Создание структуры проекта играет ключевую роль: рекомендуется выделить отдельные папки для HTML, CSS, JavaScript и серверных скриптов. Например, папка public для статических файлов и server.js для запуска Node-сервера. Это упрощает маршрутизацию и подключение ресурсов.
Для передачи HTML клиенту можно использовать встроенный модуль http или фреймворк Express. В первом случае сервер нужно настроить на чтение файла через fs.readFile, а во втором достаточно указать папку со статическими файлами через express.static. Такой подход позволяет быстро подключать CSS и JS без ручного управления заголовками и MIME-типами.
Обработка форм и запросов от пользователя требует чтения тела запроса. Для простых форм можно использовать req.on(‘data’) и req.on(‘end’), а при использовании Express удобнее подключить express.urlencoded({ extended: true }) для разбора данных POST. Это позволяет сразу использовать введённые пользователем значения в серверной логике.
После настройки сервера проверка работы HTML происходит через браузер по адресу http://localhost:3000 (или любой выбранный порт). Рекомендуется включить автоматическую перезагрузку сервера с помощью nodemon, чтобы ускорить тестирование изменений без ручного перезапуска.
Установка Node.js и проверка работы через терминал

Сначала скачайте установочный пакет Node.js с официального сайта https://nodejs.org/. Для стабильной работы серверной логики рекомендуется выбирать версию LTS. На момент 2026 года актуальная LTS-версия – 20.x. Для Windows доступен инсталлятор в формате .msi, для macOS – .pkg, а для Linux – архивы .tar.xz или пакетные менеджеры apt/yum.
После скачивания выполните установку, отметив опцию Добавить Node.js в PATH. Это позволит запускать Node.js из терминала в любой папке.
Проверка установки включает следующие шаги:
- Откройте терминал (Command Prompt на Windows, Terminal на macOS/Linux).
- Введите команду node -v. Терминал должен вывести номер версии Node.js, например v20.3.1.
- Проверьте менеджер пакетов npm через npm -v. Должен отобразиться номер версии, например 10.2.0.
- Создайте простой файл test.js с содержимым: console.log(«Node работает»);
- Запустите файл командой node test.js. В терминале должно появиться сообщение: Node работает.
Если терминал не распознаёт команду node, убедитесь, что путь к Node.js добавлен в переменную окружения PATH. На Windows это проверяется через System Properties → Environment Variables, на macOS/Linux – через команду echo $PATH.
После успешной проверки Node.js готов к работе с HTML и дальнейшей настройке сервера для отправки страниц клиенту.
Создание проекта и структура папок для HTML и Node.js

Для начала создайте рабочую папку проекта, например my-node-app. Внутри рекомендуется организовать структуру для разделения серверной логики и статических файлов. Это упростит управление кодом и подключение ресурсов.
Минимальная структура проекта выглядит так:
- my-node-app/ – корневая папка проекта
- server.js – основной файл Node.js для запуска сервера
- package.json – файл конфигурации npm, создаётся командой npm init -y
- public/ – папка для статических файлов HTML, CSS, JS
- public/index.html – главная HTML-страница
- public/css/ – стили проекта
- public/js/ – клиентский JavaScript
Для установки дополнительных пакетов используйте команду npm install. Например, npm install express позволит подключить фреймворк Express для упрощения маршрутизации и работы с HTML.
Рекомендуется сразу создать отдельные подпапки для изображений, шрифтов и других медиа в public/, чтобы при подключении через HTML пути оставались короткими и однозначными.
После создания структуры убедитесь, что в терминале внутри корневой папки можно выполнить node server.js и сервер запускается без ошибок. Это подтверждает правильное расположение файлов и готовность к подключению HTML-контента.
Настройка простого сервера с помощью встроенного модуля http
Node.js позволяет запускать сервер без дополнительных библиотек с помощью встроенного модуля http. Для создания базового сервера создайте файл server.js в корне проекта и подключите модуль командой const http = require(‘http’);
Далее используйте функцию http.createServer, которая принимает колбэк с параметрами req и res. req содержит информацию о запросе клиента, включая URL и метод, а res отвечает за отправку ответа:
const server = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('<h1>Сервер работает</h1>');
});
Для запуска сервера используйте метод listen с указанием порта, например 3000, и опционального хоста:
server.listen(3000, () => {
console.log('Сервер запущен на http://localhost:3000');
});
Важно проверять заголовок Content-Type в writeHead, чтобы браузер корректно отображал HTML. Для более сложных страниц с CSS и JS нужно расширять логику сервера с чтением файлов через fs.readFile.
После запуска сервера командой node server.js откройте браузер по адресу http://localhost:3000 для проверки работы. При изменениях в коде рекомендуется использовать nodemon для автоматической перезагрузки сервера.
Отправка HTML-файла клиенту через Node.js

Для передачи HTML-файла клиенту через Node.js используется модуль fs совместно с http. Это позволяет читать содержимое файла и отправлять его в ответ на запрос. Создайте в папке public файл index.html с минимальной структурой HTML:
<!DOCTYPE html>
<html>
<head>
<title>Node.js HTML</title>
</head>
<body>
<h1>Пример страницы</h1>
</body>
</html>
В server.js подключите модули:
const http = require('http');
const fs = require('fs');
const path = require('path');
Далее настройте обработку запросов и отправку HTML:
const server = http.createServer((req, res) => {
if (req.url === '/' || req.url === '/index.html') {
const filePath = path.join(__dirname, 'public', 'index.html');
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
res.writeHead(500, {'Content-Type': 'text/html'});
res.end('<h1>Ошибка сервера</h1>');
return;
}
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(data);
});
} else {
res.writeHead(404, {'Content-Type': 'text/html'});
res.end('<h1>Страница не найдена</h1>');
}
});
Запуск сервера выполняется командой node server.js, после чего открытие http://localhost:3000 в браузере отобразит содержимое index.html.
Важно использовать кодировку utf8 при чтении файлов и правильно указывать MIME-тип в Content-Type, чтобы браузер корректно обрабатывал HTML и подключаемые ресурсы.
Подключение статических файлов: CSS и JavaScript
Для подключения CSS и JavaScript к HTML через Node.js необходимо настроить сервер на отдачу статических файлов. Встроенный модуль http требует ручной обработки MIME-типа и путей к файлам, тогда как Express упрощает задачу с помощью express.static.
Пример использования Express для отдачи статических файлов:
const express = require('express');
const path = require('path');
const app = express();
app.use(express.static(path.join(__dirname, 'public')));
app.listen(3000, () => {
console.log('Сервер работает на http://localhost:3000');
});
В папке public создайте подпапки для CSS и JS:
- public/css/style.css – основной файл стилей
- public/js/script.js – клиентский JavaScript
В index.html подключение выполняется через стандартные теги:
<link rel="stylesheet" href="/css/style.css">
<script src="/js/script.js"></script>
Express автоматически определяет MIME-тип файлов по расширению, поэтому CSS и JS будут корректно обработаны браузером. Если используется чистый http, необходимо вручную устанавливать заголовки:
res.writeHead(200, {'Content-Type': 'text/css'}); // для CSS
res.writeHead(200, {'Content-Type': 'application/javascript'}); // для JS
Рекомендуется сразу тестировать подключение через браузер, проверяя консоль на ошибки загрузки файлов и корректность отображения стилей и выполнения скриптов.
Обработка форм и получение данных от пользователя
Для получения данных из HTML-форм через Node.js необходимо обрабатывать тело запроса. При использовании встроенного модуля http данные POST-запросов считываются через события data и end:
let body = '';
req.on('data', chunk => { body += chunk; });
req.on('end', () => {
console.log('Полученные данные:', body);
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('<h1>Данные получены</h1>');
});
Для удобного разбора форм лучше использовать Express с middleware express.urlencoded({ extended: true }). Это автоматически преобразует тело запроса в объект JavaScript:
const express = require('express');
const app = express();
app.use(express.urlencoded({ extended: true }));
app.post('/submit', (req, res) => {
console.log('Имя пользователя:', req.body.name);
res.send('<h1>Форма отправлена</h1>');
});
В HTML-форме необходимо указать метод POST и путь action, соответствующий маршруту на сервере:
<form action="/submit" method="POST">
<input type="text" name="name" placeholder="Имя">
<button type="submit">Отправить</button>
</form>
После отправки формы сервер получает данные в объекте req.body. Рекомендуется проверять наличие полей и использовать console.log или сохранять данные в базу для отладки и дальнейшей обработки.
Запуск сервера и проверка страницы в браузере

После настройки Node.js сервера убедитесь, что файл server.js находится в корне проекта и содержит корректные маршруты для HTML и статических файлов. Запуск выполняется через терминал командой:
node server.js
Если используется Express, сервер обычно слушает порт 3000 или другой, указанный в app.listen. В терминале должно появиться сообщение о запуске, например: Сервер работает на http://localhost:3000.
Для проверки откройте браузер и перейдите по адресу http://localhost:3000. Страница index.html должна корректно отображаться вместе с подключёнными CSS и JavaScript.
При отсутствии отображения проверьте:
- Правильность путей к HTML, CSS и JS в коде.
- Отсутствие ошибок в терминале, которые могут указывать на неверный путь или синтаксис.
- Использование правильного MIME-типа в заголовках, если сервер создан на http без Express.
Для ускорения разработки рекомендуется использовать nodemon, который автоматически перезапускает сервер при изменениях файлов. Команда запуска с nodemon:
npx nodemon server.js
После этого любые изменения в HTML, CSS или JS будут отображаться сразу после обновления страницы в браузере без ручного перезапуска сервера.
Вопрос-ответ:
Как проверить корректную установку Node.js на компьютере?
Для проверки откройте терминал и выполните команду node -v. Если Node.js установлен правильно, терминал выведет номер версии, например v20.3.1. Также стоит проверить npm через команду npm -v. После этого можно создать небольшой файл test.js с содержимым console.log(«Node работает»); и запустить его через node test.js, убедившись, что сообщение выводится в терминал.
Какая структура папок оптимальна для проекта с Node.js и HTML?
Рекомендуется разделять серверные и клиентские файлы. Корневая папка может содержать server.js для запуска сервера и package.json для управления зависимостями. Для статических файлов создайте папку public с подпапками css и js, где будут храниться стили и скрипты, а HTML-файлы положите непосредственно в public. Такая организация упрощает маршрутизацию и подключение ресурсов.
Как отправить HTML-страницу клиенту через Node.js без Express?
Используйте встроенные модули http и fs. В колбэке http.createServer проверяйте URL запроса и для нужного пути читайте HTML-файл через fs.readFile с кодировкой utf8. Затем установите заголовок Content-Type: text/html и отправьте данные методом res.end(). При ошибках чтения файла отправьте сообщение об ошибке с кодом 500, а для неизвестных URL — код 404 с соответствующим текстом.
Как подключить CSS и JavaScript к HTML через Node.js?
Если используется Express, подключение упрощается с помощью express.static. Создайте папку public и внутри подпапки css и js. В HTML добавьте ссылки на файлы: <link rel=»stylesheet» href=»/css/style.css»> и <script src=»/js/script.js»></script>. Express автоматически установит правильные заголовки. При использовании чистого http необходимо вручную проверять расширение файла и устанавливать заголовок Content-Type соответствующего типа.
Как получить данные из формы, отправленной на сервер?
Если используется чистый http, данные POST-запроса считываются через события data и end, после чего их можно разобрать вручную, например через URLSearchParams. В Express подключите middleware express.urlencoded({ extended: true }). Тогда при POST-запросе к маршруту, например /submit, все поля формы будут доступны через объект req.body. После этого можно выводить значения в консоль, сохранять в базу или использовать в логике приложения.
Как правильно настроить Node.js сервер для работы с несколькими HTML-страницами и подключёнными скриптами?
Для работы с несколькими страницами и подключёнными файлами CSS и JS через Node.js рекомендуется использовать Express и папку public для статических ресурсов. Создайте отдельные HTML-файлы внутри public — например, index.html и about.html. В server.js подключите Express и укажите app.use(express.static(path.join(__dirname, ‘public’))). Для маршрутов можно настроить обработку запросов: app.get(‘/about’, (req, res) => { res.sendFile(path.join(__dirname, ‘public’, ‘about.html’)) }). Такой подход позволяет обращаться к файлам напрямую через URL, а подключение скриптов и стилей выполняется через относительные пути внутри HTML, например <link rel=»stylesheet» href=»/css/style.css»> и <script src=»/js/script.js»></script>. Сервер автоматически отдает правильные MIME-типы, что исключает ошибки отображения. Проверка работы выполняется в браузере по адресу http://localhost:3000 и http://localhost:3000/about. При необходимости можно добавить middleware для логирования запросов или обработки ошибок, чтобы видеть, какие файлы успешно загружаются, а какие вызывают 404.
