Що таке «core module» у Node.js?
1. Визначення
Core module (вбудований модуль) - це модуль, який постачається у складі Node.js за замовчуванням і не потребує встановлення через
npm.
Ці модулі вшиті в сам Node.js, написані на C++ і JavaScript, і надають доступ до можливостей операційної системи, файлової системи, мережі тощо.
2. Основні характеристики
| Особливість | Опис |
|---|---|
| Попередньо встановлені | Не потрібно встановлювати - вони частина Node.js |
| Завантажуються швидше | Node.js кешує їх у пам'яті, без доступу до диска |
| Написані на C++/JS | Більшість - обгортки над системними API |
| Імена без шляху | Імпортуються без ./ чи ../ |
Використовуються через require() чи import | Можна підключати і в CommonJS, і в ESM |
3. Приклади core-модулів
| Категорія | Модуль | Призначення |
|---|---|---|
| Файлова система | fs | Робота з файлами й папками (читання, запис, потоки) |
| Мережа | http, https, net, dns | Створення серверів, робота з TCP/HTTP, DNS-запити |
| Робота зі шляхами | path | Маніпуляції зі шляхами (join, resolve, basename тощо) |
| Система та ОС | os | Інформація про систему, CPU, пам'ять, платформу |
| Утиліти | util | Допоміжні функції (promisify, types, inherits) |
| Таймери | timers | Доступ до setTimeout, setInterval, setImmediate |
| Потоки | stream | Робота з потоками читання/запису |
| Буфери | buffer | Робота з бінарними даними (зокрема файли й мережа) |
| Криптографія | crypto | Хешування, шифрування, генерація ключів |
| Процеси | process, child_process | Доступ до поточного процесу й запуск дочірніх |
| Модулі | module | Робота з системою модулів Node.js |
| Компресія | zlib | Стиснення й розпакування даних (gzip, deflate тощо) |
| URL і запити | url, querystring | Парсинг URL, обробка рядків запитів |
| Діагностика | v8, perf_hooks, inspector | Робота з V8, профілювання, налагодження |
4. Приклади використання
Модуль fs
Робота з файлами:
import { readFileSync } from 'fs';
const text = readFileSync('./hello.txt', 'utf8');
console.log(text);Модуль http
Створення простого HTTP-сервера:
import http from 'http';
const server = http.createServer((req, res) => {
res.end('Hello from Node.js!');
});
server.listen(3000);Модуль path
Робота зі шляхами:
import path from 'path';
const fullPath = path.join('users', 'tim', 'notes.txt');
console.log(fullPath); // users/tim/notes.txtМодуль os
Отримання інформації про систему:
import os from 'os';
console.log('Платформа:', os.platform());
console.log('Ядер CPU:', os.cpus().length);
console.log('Вільна пам'ять:', os.freemem());Модуль crypto
Створення SHA256-хешу:
import crypto from 'crypto';
const hash = crypto.createHash('sha256').update('password123').digest('hex');
console.log(hash);5. Як визначити, що модуль - core
Node.js надає вбудований метод:
import { builtinModules } from 'module';
console.log(builtinModules);Виведе масив усіх вбудованих модулів, наприклад:
[
'fs', 'path', 'os', 'http', 'crypto', 'stream', 'events',
'zlib', 'url', 'dns', 'net', 'child_process', ...
]6. Особливості під час використання ESM
У ESM (якщо "type": "module") core-модулі підключаються так:
import fs from 'fs';
import path from 'path';
import { createServer } from 'http';Жодних ./ - саме за назвою модуля.
7. Чому core-модулі швидші
Коли ти викликаєш:
require('fs');Node.js:
- Перевіряє, чи є модуль у списку core;
- Якщо є - завантажує його з пам'яті (C++ binding),
минаючи файлову систему й
node_modules.
Тому require('fs') швидший за require('./fs.js').
8. Відмінність core-модулів від зовнішніх
| Порівняння | Core module | Зовнішній (npm) |
|---|---|---|
| Джерело | Вбудований у Node.js | Встановлюється через npm install |
| Місце зберігання | Усередині бінарника Node.js | У node_modules |
| Завантаження | Без доступу до диска | Зчитується з файлової системи |
| Оновлення | Тільки з версією Node.js | Оновлюється окремо |
| Приклад | fs, path, crypto | express, lodash, axios |
Одним реченням
Core modules - це вбудовані в Node.js модулі, які забезпечують низькорівневий доступ до функцій ОС (файли, мережа, процеси, потоки, криптографія тощо) і доступні без встановлення через
require('ім'я')чиimport 'ім'я'.
9. Найчастіше вживані core-модулі
| Модуль | Призначення |
|---|---|
fs | Робота з файлами |
path | Маніпуляції зі шляхами |
http / https | Створення серверів |
os | Інформація про систему |
events | Створення й обробка подій |
crypto | Хешування й шифрування |
child_process | Запуск дочірніх процесів |
stream | Потоки даних |
url | Робота з URL |
util | Утилітарні функції (promisify, inherits) |
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.