Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що таке «core module» у Node.js?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Core module** - модуль, що постачається разом із Node.js за замовчуванням (`fs`, `http`, `path`, `os`, `crypto`...) і не потребує встановлення через npm; він вшитий у сам бінарник Node.js, тому завантажується швидше за файлові чи npm-модулі. **Ключове:** `require('fs')` швидший за `require('./fs.js')`, бо core-модуль береться напряму з пам'яті, минаючи файлову систему.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## 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`, `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`) |Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.