Стандартная библиотека 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— поток для записи данных.
Также в библиотеке
nlohmann/json для C++: полное руководство с примерами
Мониторинг приложений PHP: полное руководство по инструментам и библиотекам
Парсинг HTML в Swift (iOS/macOS): библиотеки SwiftSoup и Fuzi