Стандартная библиотека JavaScript (Node.js): полный обзор
Node.js — это среда выполнения JavaScript, построенная на движке V8 от Google. В отличие от браузерного JavaScript, Node.js предлагает мощную встроенную стандартную библиотеку, которая позволяет работать с файловой системой, сетью, потоками данных, криптографией и многим другим. В этой статье мы подробно рассмотрим ключевые модули стандартной библиотеки Node.js, которые необходимы каждому разработчику.
1. Модуль fs (File System)
Модуль fs предоставляет API для взаимодействия с файловой системой. Он поддерживает как синхронные, так и асинхронные операции.
- Чтение файла:
const fs = require('fs');
// Асинхронное чтение
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
// Синхронное чтение
const data = fs.readFileSync('example.txt', 'utf8');
console.log(data);
- Запись в файл:
const fs = require('fs');
fs.writeFile('output.txt', 'Привет, мир!', (err) => {
if (err) throw err;
console.log('Файл сохранён');
});
Модуль также поддерживает работу с директориями, потоками и правами доступа.
2. Модуль path (Работа с путями)
Модуль path упрощает манипуляции с файловыми путями и обеспечивает кроссплатформенную совместимость.
const path = require('path');
const fullPath = '/users/docs/file.txt';
console.log(path.dirname(fullPath)); // /users/docs
console.log(path.basename(fullPath)); // file.txt
console.log(path.extname(fullPath)); // .txt
// Сборка пути
const newPath = path.join('/users', 'docs', 'file.txt');
console.log(newPath); // /users/docs/file.txt
3. Модуль http (HTTP-сервер и клиент)
С помощью http можно создавать веб-серверы и отправлять HTTP-запросы без сторонних библиотек.
- Простой HTTP-сервер:
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Привет от Node.js!');
});
server.listen(3000, () => {
console.log('Сервер запущен на порту 3000');
});
- HTTP-запрос (клиент):
const http = require('http');
http.get('http://api.example.com/data', (res) => {
let data = '';
res.on('data', chunk => data += chunk);
res.on('end', () => console.log(data));
});
4. Модуль stream (Потоки данных)
Потоки позволяют обрабатывать большие объёмы данных по частям, не загружая их целиком в память. Node.js поддерживает четыре типа потоков: Readable, Writable, Duplex и Transform.
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);
5. Модуль crypto (Криптография)
Модуль crypto предоставляет функциональность для хеширования, шифрования и генерации случайных чисел.
const crypto = require('crypto');
// Хеширование пароля
const hash = crypto.createHash('sha256').update('myPassword123').digest('hex');
console.log(hash);
// Генерация случайных байтов
crypto.randomBytes(16, (err, buffer) => {
console.log(buffer.toString('hex'));
});
6. Модуль events (События)
Многие объекты в Node.js (например, потоки, серверы) наследуют от EventEmitter. Этот модуль позволяет создавать собственные события.
const EventEmitter = require('events');
const myEmitter = new EventEmitter();
myEmitter.on('customEvent', (msg) => {
console.log('Получено событие:', msg);
});
myEmitter.emit('customEvent', 'Привет из события!');
7. Модуль os (Информация об операционной системе)
Модуль os предоставляет методы для получения информации о системе: архитектура, память, платформа и т.д.
const os = require