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

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

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

Начать курс

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

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

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

Модуль fs — основа для работы с файлами и директориями. Поддерживает как синхронные, так и асинхронные операции.

  • Чтение файла (асинхронное):
const fs = require('fs');

fs.readFile('example.txt', 'utf8', (err, data) => {
    if (err) throw err;
    console.log(data);
});
  • Запись в файл:
fs.writeFile('output.txt', 'Hello, Node.js!', (err) => {
    if (err) throw err;
    console.log('Файл сохранён');
});
  • Работа с директориями (создание, удаление, чтение):
// Создание папки
fs.mkdir('newDir', { recursive: true }, (err) => {
    if (err) throw err;
    console.log('Папка создана');
});

// Чтение содержимого папки
fs.readdir('.', (err, files) => {
    console.log(files); // массив имён файлов
});

2. Модуль path

Модуль path упрощает работу с путями файлов и папок, независимо от операционной системы.

  • Объединение путей:
const path = require('path');

const fullPath = path.join('users', 'admin', 'docs', 'file.txt');
console.log(fullPath); // users/admin/docs/file.txt (в Linux) или users\admin\docs\file.txt (в Windows)
  • Получение расширения файла:
const ext = path.extname('image.png');
console.log(ext); // '.png'
  • Нормализация пути (убирает лишние «..» и «.»):
const normalized = path.normalize('/foo/bar//baz/asdf/quux/..');
console.log(normalized); // /foo/bar/baz/asdf

3. Модуль http

Позволяет создавать HTTP-серверы и клиенты. Именно на этом модуле построены такие фреймворки, как Express.js.

  • Простой HTTP-сервер:
const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Привет, мир!');
});

server.listen(3000, () => {
    console.log('Сервер запущен на порту 3000');
});
  • HTTP-клиент (делаем GET-запрос):
http.get('http://jsonplaceholder.typicode.com/posts/1', (res) => {
    let data = '';
    res.on('data', chunk => data += chunk);
    res.on('end', () => console.log(JSON.parse(data)));
});

4. Модуль events

Реализует шаблон «Наблюдатель» (EventEmitter). Позволяет создавать собственные события и подписываться на них.

const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();

// Подписка на событие
myEmitter.on('greet', (name) => {
    console.log(`Привет, ${name}!`);
});

// Генерация события
myEmitter.emit('greet', 'Алексей'); // Привет, Алексей!

5. Модуль buffer

Buffer — это временное хранилище для бинарных данных. Используется при работе с потоками, файлами, сетевыми протоколами.

// Создание буфера из строки
const buf = Buffer.from('Hello', 'utf8');
console.log(buf); // <Buffer 48 65 6c 6c 6f>

// Конкатенация буферов
const buf1 = Buffer.from('Node');
const buf2 = Buffer.from('.js');
const result = Buffer.concat([buf1, buf2]);
console.log(result.toString()); // Node.js

6. Модуль stream

Потоки (Streams) позволяют обрабатывать данные по частям, не загружая их целиком в память. Это критически важно для

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