Skip to main content

Що таке «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

Робота з файлами:

javascript
import { readFileSync } from 'fs'; const text = readFileSync('./hello.txt', 'utf8'); console.log(text);

Модуль http

Створення простого HTTP-сервера:

javascript
import http from 'http'; const server = http.createServer((req, res) => { res.end('Hello from Node.js!'); }); server.listen(3000);

Модуль path

Робота зі шляхами:

javascript
import path from 'path'; const fullPath = path.join('users', 'tim', 'notes.txt'); console.log(fullPath); // users/tim/notes.txt

Модуль os

Отримання інформації про систему:

javascript
import os from 'os'; console.log('Платформа:', os.platform()); console.log('Ядер CPU:', os.cpus().length); console.log('Вільна пам'ять:', os.freemem());

Модуль crypto

Створення SHA256-хешу:

javascript
import crypto from 'crypto'; const hash = crypto.createHash('sha256').update('password123').digest('hex'); console.log(hash);

5. Як визначити, що модуль - core

Node.js надає вбудований метод:

javascript
import { builtinModules } from 'module'; console.log(builtinModules);

Виведе масив усіх вбудованих модулів, наприклад:

javascript
[ 'fs', 'path', 'os', 'http', 'crypto', 'stream', 'events', 'zlib', 'url', 'dns', 'net', 'child_process', ... ]

6. Особливості під час використання ESM

У ESM (якщо "type": "module") core-модулі підключаються так:

javascript
import fs from 'fs'; import path from 'path'; import { createServer } from 'http';

Жодних ./ - саме за назвою модуля.

7. Чому core-модулі швидші

Коли ти викликаєш:

javascript
require('fs');

Node.js:

  1. Перевіряє, чи є модуль у списку core;
  2. Якщо є - завантажує його з пам'яті (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, cryptoexpress, 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)

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.