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

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

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

Начать курс

Стандартная библиотека 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                    

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