Встроенные модули Node.js

Встроенные модули Node.js — это основные функциональные модули, которые поставляются вместе со средой выполнения Node.js и могут использоваться без дополнительной установки. Эти модули предоставляют базовые системные функции, такие как файловые операции, сетевое взаимодействие и управление процессами, и являются фундаментальными инструментами для разработки на Node.js.

В отличие от сторонних модулей, которые необходимо устанавливать через npm, встроенные модули можно загружать напрямую черезrequire()функцию, например:

const fs = require('fs'); // Модуль файловой системы
const http = require('http'); // Модуль HTTP

Введение в общие встроенные модули

Ниже приведено подробное описание и обзор функциональности основных встроенных модулей Node.js.

Название модуля Описание Общие классы/методы Типичные способы использования
fs (Файловая система) Операции с файловой системой readFile, writeFile, mkdir, readdir, createReadStream, createWriteStream Чтение/запись файлов, операции с каталогами
path Обработка путей к файлам join, resolve, dirname, basename, extname Кроссплатформенная работа с путями
http HTTP-сервер/клиент createServer, request, get Создание веб-сервера/клиента
https HTTPS-сервер/клиент createServer, request Создание безопасных веб-сервисов
url Разбор и обработка URL parse, format, URLКласс Разбор и построение URL
querystring Обработка строки запроса parse, stringify Обработка параметров запроса URL
os Информация об операционной системе cpus, freemem, totalmem, homedir, hostname Получение информации о системе
events Обработка событий EventEmitter, on, emit, once Пользовательская система событий
stream Операции с потоками Readable, Writable, Duplex, Transform, pipe Обработка потоков данных
crypto Функциональность шифрования createHash, createCipher, createDecipher, randomBytes Шифрование/дешифрование/хеширование
zlib Сжатие/распаковка createGzip, createGunzip, createDeflate, createInflate Сжатие/распаковка данных
util Служебные инструменты promisify, inherits, format, types Вспомогательные функции
child_process Управление дочерними процессами exec, execFile, spawn, fork Создание дочерних процессов
cluster Управление кластером fork, isMaster, isWorker Многопроцессная балансировка нагрузки
dns Разрешение доменных имён lookup, resolve, reverse Разрешение доменных имён
domain Модуль для обработки ошибок из нескольких асинхронных операций create , run, add Предоставляет механизм для группировки нескольких различных операций ввода-вывода и единообразной обработки их ошибок.
net Сетевые операции createServer, connect, Socket TCP-сервер/клиент
dgram UDP-датаграмма createSocket, send, bind UDP-связь
readline Построчное чтение createInterface, on('line') Взаимодействие с командной строкой
repl Интерактивный интерпретатор start, context Создание среды REPL
vm Виртуальной машины runInContext, createContext, Script Выполнение кода JavaScript
assert Тестирование утверждений equal, strictEqual, deepEqual, throws Утверждения модульных тестов
buffer Обработка двоичных данных Buffer, alloc, from, concat Обрабатывать двоичные данные
console Вывод в консоль log, error, time, timeEnd Отладочный вывод
timers Таймеры setTimeout, setInterval, setImmediate, clearTimeout Запланированные задачи
perf_hooks Мониторинг производительности performance, PerformanceObserver Измерение производительности
worker_threads Рабочие потоки Worker, isMainThread, parentPort Многопоточное программирование

1. fs (модуль файловой системы)

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

Основные возможности:

  • Чтение/запись файлов
  • Создание/удаление каталогов
  • Отслеживание изменений файлов
  • Получение информации о файле

Пример кода:

Пример

const fs = require('fs');

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

// Синхронная запись файла
try {
  fs.writeFileSync('output.txt', 'Hello Node.js');
  console.log('File written successfully');
} catch (err) {
  console.error(err);
}

2. path (Модуль path)

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

Общие методы:

  • path.join()- Объединение путей
  • path.resolve()- Преобразование в абсолютный путь
  • path.basename()- Получение имени файла
  • path.extname()- Получение расширения файла

Пример кода:

Пример

const path = require('path');

const fullPath = path.join(__dirname, 'files', 'example.txt');
console.log(fullPath); // Вывод примерно такой: /home/user/project/files/example.txt

const ext = path.extname('index.html');
console.log(ext); // Вывод: .html

3. http (Модуль HTTP)

httpМодуль позволяет Node.js работать как HTTP-сервер или клиент.

Основные возможности:

  • Создание HTTP-сервера
  • Отправка HTTP-запросов
  • Обработка HTTP-запросов и ответов

Пример кода: создание простого сервера

Пример

const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello Node.js Server');
});

server.listen(3000, () => {
  console.log('Server running at http://localhost:3000/');
});

4. events (Модуль событий)

eventsМодуль предоставляет интерфейс событийно-ориентированного программирования и является основой асинхронного программирования в Node.js.

Основные концепции:

  • Класс EventEmitter
  • Прослушивание событий (on)
  • Вызов событий (emit)

Пример кода:

Пример

const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();

// Слушать событие
myEmitter.on('event', () => {
  console.log('Событие было вызвано!');
});

// Вызвать событие
myEmitter.emit('event');

5. os (Модуль операционной системы)

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

Общие возможности:

  • Получить информацию о процессоре
  • Получить информацию о памяти
  • Получить информацию о сетевых интерфейсах
  • Получить временный каталог системы

Пример кода:

Пример

const os = require('os');

console.log(os.platform()); // Платформа операционной системы
console.log(os.totalmem()); // Общий объём памяти системы
console.log(os.freemem()); // Доступная память системы
console.log(os.cpus()); // Информация о процессоре

Другие важные встроенные модули

1. util (Модуль утилит)

utilМодуль предоставляет различные служебные функции, включая:

  • Проверка типов
  • Форматирование строк
  • Преобразование функций обратного вызова в промисы
  • Утилиты наследования

2. crypto (Криптографический модуль)

cryptoМодуль предоставляет функциональность шифрования, включая:

  • Алгоритмы хеширования
  • HMAC
  • Шифрование/дешифрование
  • Цифровые подписи

3. stream (Модуль stream)

streamМодуль представляет собой абстрактный интерфейс для обработки потоковых данных, и многие модули в Node.js реализованы на основе потоков.

4. child_process (Модуль дочерних процессов)

child_processМодуль позволяет создавать дочерние процессы и управлять ими, а также выполнять системные команды или другие программы.

5. url (Модуль URL)

urlМодуль предоставляет инструменты для разбора и форматирования URL.


Как использовать встроенные модули

Все встроенные модули можно загрузить напрямую с помощьюrequire()функцию:

Пример

const moduleName = require('module_name');

Примечания:

  1. Имена модулей не требуют пути
  2. Имена модулей чувствительны к регистру
  3. Установка не требуется, поставляется вместе с Node.js
  4. Разные версии Node.js могут включать разные встроенные модули

Преимущества встроенных модулей

  1. Высокая производительность: тесная интеграция со средой выполнения Node.js
  2. Стабильность: тщательное тестирование, высокая надёжность
  3. Не требует установки: работает из коробки
  4. Кроссплатформенность: единообразное поведение в разных операционных системах
  5. Исчерпывающая документация: подробная официальная документация
Другие расширения