Встроенные модули Node.js
Встроенные модули Node.js — это основные функциональные модули, которые поставляются вместе со средой выполнения Node.js и могут использоваться без дополнительной установки. Эти модули предоставляют базовые системные функции, такие как файловые операции, сетевое взаимодействие и управление процессами, и являются фундаментальными инструментами для разработки на Node.js.
В отличие от сторонних модулей, которые необходимо устанавливать через npm, встроенные модули можно загружать напрямую черезrequire()функцию, например:
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 для взаимодействия с файловой системой, поддерживая как синхронные, так и асинхронные операции.
Основные возможности:
- Чтение/запись файлов
- Создание/удаление каталогов
- Отслеживание изменений файлов
- Получение информации о файле
Пример кода:
Пример
// Асинхронное чтение файла
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 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 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)
Пример кода:
Пример
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
// Слушать событие
myEmitter.on('event', () => {
console.log('Событие было вызвано!');
});
// Вызвать событие
myEmitter.emit('event');
5. os (Модуль операционной системы)
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()функцию:
Пример
Примечания:
- Имена модулей не требуют пути
- Имена модулей чувствительны к регистру
- Установка не требуется, поставляется вместе с Node.js
- Разные версии Node.js могут включать разные встроенные модули
Преимущества встроенных модулей
- Высокая производительность: тесная интеграция со средой выполнения Node.js
- Стабильность: тщательное тестирование, высокая надёжность
- Не требует установки: работает из коробки
- Кроссплатформенность: единообразное поведение в разных операционных системах
- Исчерпывающая документация: подробная официальная документация