Стандартная библиотека JavaScript (Node.js): полный обзор

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Стандартная библиотека JavaScript (Node.js): полный обзор

Node.js — это среда выполнения JavaScript, построенная на движке V8 от Google. Одним из главных её преимуществ является богатая стандартная библиотека, предоставляющая готовые модули для решения самых разных задач: от работы с файловой системой до создания HTTP-серверов. В этой статье мы подробно разберём ключевые модули стандартной библиотеки Node.js, покажем примеры их использования и объясним, когда какой модуль применять.

1. Модуль fs (File System)

Модуль fs позволяет работать с файловой системой: читать, записывать, удалять файлы и директории, а также отслеживать изменения. Он предоставляет как синхронные, так и асинхронные методы.

const fs = require('fs');

// Асинхронное чтение файла
fs.readFile('example.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});

// Синхронная запись файла
fs.writeFileSync('output.txt', 'Hello, Node.js!');
  • fs.readFile() — асинхронное чтение файла.
  • fs.writeFileSync() — синхронная запись данных в файл.
  • fs.mkdir() — создание директории.
  • fs.unlink() — удаление файла.

2. Модуль path

Модуль path предоставляет утилиты для работы с путями файлов и директорий. Он автоматически обрабатывает различия между операционными системами (Windows, Linux, macOS).

const path = require('path');

const filePath = '/home/user/docs/file.txt';
console.log(path.dirname(filePath));    // /home/user/docs
console.log(path.basename(filePath));   // file.txt
console.log(path.extname(filePath));    // .txt
  • path.join() — объединяет сегменты пути.
  • path.resolve() — преобразует относительный путь в абсолютный.
  • path.normalize() — нормализует путь (убирает лишние .. и .).

3. Модуль http

Модуль http позволяет создавать HTTP-серверы и клиенты. Это основа для построения веб-приложений и API.

const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello, World!\n');
});

server.listen(3000, () => {
  console.log('Сервер запущен на порту 3000');
});
  • http.createServer() — создаёт экземпляр сервера.
  • http.request() — выполняет HTTP-запрос к внешнему ресурсу.
  • http.get() — упрощённая версия request() для GET-запросов.

4. Модуль events

Модуль events реализует паттерн "Наблюдатель" (Observer). Он позволяет создавать собственные события и подписываться на них. Большинство объектов Node.js (например, потоки, серверы) наследуются от EventEmitter.

const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();
myEmitter.on('event', () => {
  console.log('Событие произошло!');
});
myEmitter.emit('event');
  • emitter.on() — подписка на событие.
  • emitter.emit() — генерация события.
  • emitter.once() — подписка на одноразовое событие.

5. Модуль stream

Потоки (streams) — это фундаментальная концепция Node.js для работы с данными, которые обрабатываются по частям, а не целиком. Это особенно полезно для больших файлов или сетевых данных.

const fs = require('fs');
const zlib = require('zlib');

const readStream = fs.createReadStream('input.txt');
const writeStream = fs.createWriteStream('output.txt.gz');
const gzip = zlib.createGzip();

readStream.pipe(gzip).pipe(writeStream);
  • Readable — поток для чтения данных.
  • Writable — поток для записи данных.

Рекомендаций