Node.js: JavaScript вне браузера
JavaScript изначально создавался для браузеров — чтобы делать кнопки интерактивными и анимировать страницы. Но в 2009 году появился Node.js и изменил всё: теперь один и тот же язык работает и на фронтенде, и на сервере. Узнаем, как и зачем.
🌱 Что такое Node.js и откуда он взялся
До 2009 года JavaScript работал только в браузере. Если хотел писать серверы — учи PHP, Ruby или Python. Если хотел делать интерфейсы — учи JavaScript. Разделение было жёстким.
В 2009 году Райан Даль взял движок V8 — тот самый, который Google использует в браузере Chrome для запуска JavaScript — и вынул его из браузера. Добавил к нему библиотеки для работы с файлами, сетью и операционной системой. Так родился Node.js.
🟢 Node.js — это среда выполнения JavaScript вне браузера. Он позволяет запускать JS-код прямо на компьютере или сервере, без браузера. Работает на Windows, macOS, Linux.
Node.js создаёт огромный программный мир с одним языком: один разработчик может написать и браузерный интерфейс, и серверную логику. Это называется fullstack JavaScript.
🎯 Зачем нужен Node.js — три главных применения
🌐 1. Веб-серверы и API
Node.js отлично справляется с созданием HTTP-серверов — программ, которые принимают запросы от браузеров и отвечают данными. На нём работают Netflix, LinkedIn, Uber. Фреймворки Express, Fastify, NestJS делают создание серверов удобным.
⚙️ 2. CLI-инструменты и скрипты
Те самые npm, webpack, Vite, ESLint, Prettier — всё это программы на Node.js! Вы можете писать скрипты для автоматизации: переименование файлов, парсинг данных, генерация отчётов.
🔧 3. Инструменты сборки
Webpack, Vite, Rollup — сборщики, которые превращают ваш исходный код в оптимизированный файл для браузера. Next.js, React, Vue — их dev-серверы работают на Node.js. Даже если вы фронтенд-разработчик, Node.js уже у вас под капотом.
⚖️ Браузерный JS vs Node.js: в чём разница
Один язык, две разные среды. Понимание разницы спасёт вас от многих ошибок:
- Есть
window,document,navigator - DOM для работы с HTML
- localStorage, sessionStorage
- fetch API для HTTP-запросов
- Нет доступа к файловой системе
- Нет доступа к сети напрямую
- Нет
windowиdocument - Есть
process(аргументы, переменные окружения) - Модуль
fs— чтение/запись файлов - Модуль
http— создание серверов - Полный доступ к файловой системе
- Сетевое программирование
⚠️ Частая ошибка новичков: пытаться использовать document.getElementById() в Node.js или модуль fs в браузере. Среды разные — набор API разный.
📚 Встроенные модули Node.js
Node.js поставляется с набором встроенных модулей — их не нужно устанавливать через npm. Вот самые важные:
📄 fs — файловая система
Читать файлы, записывать, создавать папки, удалять, переименовывать — всё через модуль fs.
import { readFile, writeFile, mkdir } from 'fs/promises';
// Читаем файл
const content = await readFile('./data.txt', 'utf-8');
console.log(content);
// Записываем файл
await writeFile('./result.txt', 'Привет из Node.js!');
// Создаём папку
await mkdir('./output', { recursive: true });
🗂️ path — работа с путями файлов
Работа с путями к файлам и папкам в кроссплатформенном стиле — на Windows пути через \, на Linux/Mac через /, path всё унифицирует.
import path from 'path';
const filePath = '/users/ivan/project/src/index.js';
console.log(path.dirname(filePath)); // /users/ivan/project/src
console.log(path.basename(filePath)); // index.js
console.log(path.extname(filePath)); // .js
// Склеить путь правильно на любой ОС
const joined = path.join('src', 'components', 'Button.js');
console.log(joined); // src/components/Button.js (или src\components\Button.js на Windows)
🌐 http — HTTP-сервер
Встроенный модуль для создания HTTP-серверов. В реальных проектах используют Express поверх него, но базовое понимание важно.
import http from 'http';
const server = http.createServer((request, response) => {
// Устанавливаем заголовки ответа
response.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
// Отправляем тело ответа
response.end('Привет! Это мой первый Node.js сервер!');
});
// Запускаем сервер на порту 3000
server.listen(3000, () => {
console.log('Сервер запущен: http://localhost:3000');
});
Теперь если запустить этот файл командой node server.js и открыть http://localhost:3000 в браузере — вы увидите текст «Привет! Это мой первый Node.js сервер!». Вот так просто создаётся веб-сервер на JavaScript.
🛠️ Первые шаги: запускаем код в Node.js
Попробуем написать и запустить настоящий Node.js скрипт. Создайте файл hello.js:
// hello.js
// В Node.js есть объект process — информация о среде
console.log('Версия Node.js:', process.version);
console.log('Платформа:', process.platform); // 'win32', 'darwin', 'linux'
// Аргументы командной строки
const args = process.argv.slice(2); // Убираем первые два (путь node и файл)
const name = args[0] || 'Мир';
console.log(`Привет, ${name}!`);
Запустите в терминале:
node hello.js # Привет, Мир!
node hello.js Алиса # Привет, Алиса!
Давайте напишем более полезный скрипт — генератор файлов:
// generator.js — создаёт HTML-файл по шаблону
import { writeFile } from 'fs/promises';
import path from 'path';
const [,, pageName, title] = process.argv;
if (!pageName || !title) {
console.error('Использование: node generator.js имя-файла "Заголовок"');
process.exit(1); // Завершить с кодом ошибки
}
const html = `
${title}
${title}
Страница создана автоматически.
`;
const filePath = path.join('.', `${pageName}.html`);
await writeFile(filePath, html, 'utf-8');
console.log(`Файл создан: ${filePath}`);
node generator.js about "О нас"
# Создаст файл about.html с заголовком "О нас"
🚀 Где используется Node.js — реальные примеры
Самый популярный фреймворк для REST API на Node.js. Минималистичный и гибкий.
React-фреймворк с серверным рендерингом на Node.js. Один из самых популярных в 2024-2026.
Создание десктопных приложений на JS. VS Code, Slack, Discord — написаны на Electron.
npm, webpack, Vite, ESLint, Prettier, Jest — всё это программы на Node.js, которые вы уже используете.
✅ Итоги урока
- Node.js — среда выполнения JS вне браузера, основана на движке V8 из Chrome
- Применяется для: веб-серверов, CLI-скриптов, инструментов сборки, десктопных приложений
- В браузере есть
window/document, в Node.js —fs/http/process - Модуль
fs— чтение и запись файлов;path— кроссплатформенные пути - Модуль
http— создание HTTP-серверов:http.createServer() process.argv— аргументы командной строки;process.exit()— завершение процесса- Фреймворки на Node.js: Express, Next.js, Electron, Fastify, NestJS
В следующем уроке — регулярные выражения: мощный инструмент для поиска и замены текста по шаблону. 🔍
Тест: Node.js
6 вопросов