Node.js — це середовище виконання JavaScript на сервері, побудоване на рушії V8.
Немасивна, подієва архітектура і асинхронність роблять його ефективним для високонавантажених додатків.
З офіційного сайту nodejs.org або через менеджери пакетів (nvm, brew).
Node Package Manager — менеджер пакетів для Node.js.
Файл або набір файлів, який експортує функції, об’єкти чи змінні.
За допомогою require('module')
або import
у ES-модулях.
Об’єкт, доступний у будь-якому модулі Node.js без імпорту (global
).
Об’єкт, що надає інформацію про поточний процес Node.js і дозволяє взаємодіяти з ним.
Через process.argv
.
Модуль для роботи з файловою системою.
fs.readFileSync('file.txt', 'utf-8')
fs.readFile('file.txt', 'utf-8', callback)
Функція, передана в іншу функцію для виконання після завершення операції.
Об’єкт, який представляє завершення або невдачу асинхронної операції.
Позначаємо функцію як async
і використовуємо await
перед промісами.
Цикл подій, який обробляє асинхронні операції в Node.js.
Об’єкт для роботи з двійковими даними.
Об’єкт для обробки даних по частинах (readable, writable, duplex, transform).
Об’єкт, який експортує функції або змінні з модуля.
Функція для імпорту модулів CommonJS.
За допомогою модуля http.createServer()
.
Функція, яка обробляє запит перед передачею до наступної функції у стеку.
Фреймворк для побудови веб-серверів у Node.js.
Через app.get('/route', handler)
, app.post
тощо.
Файл конфігурації проекту, що містить залежності та скрипти.
Утиліта для автоматичного перезапуску сервера при зміні коду.
Модуль для запуску кількох процесів Node.js для використання всіх ядер CPU.
Об’єкт для доступу до змінних середовища.
Модуль для криптографічних операцій (хеші, шифрування).
Клас для роботи з подіями та підписками на них.
Через emitter.on('event', callback)
або emitter.once
.
Потік, з якого можна читати дані частинами.
Потік, в який можна записувати дані частинами.
Потік, який одночасно читає і записує дані.
Дуплекс-потік, який змінює дані під час проходження через нього.
Підпискою на подію 'error'
(stream.on('error', callback)
).
Попередньо виділена пам’ять для буферів, щоб уникнути частих алокацій.
Метод для планування колбеку на наступну ітерацію циклу подій перед промісами.
Запускає колбек на наступній ітерації event loop, після I/O подій.
Надає setTimeout
, setInterval
, setImmediate
для відкладеного виконання коду.
Метод для створення нового процесу Node.js у кластері.
Міжпроцесна комунікація для обміну повідомленнями між процесами.
Модуль для запуску інших процесів з Node.js.
Через child_process.exec('command', callback)
для запуску команд shell.
Через child_process.spawn('command', args)
для потокової роботи з процесом.
Головний процес, який створює і контролює воркер-процеси.
Процес у кластері, що обробляє запити.
Через app.use(middlewareFunction)
.
За допомогою app.use(express.json())
.
app.use(express.static('public'))
Динамічні частини URL, які можна отримати через req.params
.
Параметри URL після ?
, доступні через req.query
.
Middleware для обробки cookie в Express.
Механізм збереження стану користувача між запитами.
Cross-Origin Resource Sharing — політика доступу до ресурсів з інших доменів.
Через middleware з чотирма параметрами (err, req, res, next)
.
Middleware для безпеки HTTP заголовків.
Middleware для логування HTTP запитів.
Модуль для завантаження змінних середовища з файлу .env
.
Middleware для парсингу тіла запиту (JSON, URL-encoded).
Протокол для двостороннього зв’язку між сервером і клієнтом у реальному часі.
Наприклад, ws
або socket.io
.
Метод для відправки події від сервера до клієнта або навпаки.
За допомогою socket.on('event', callback)
для отримання подій.
Read-Eval-Print Loop — інтерактивна консоль Node.js для виконання коду.
Запустити командою node
без аргументів у терміналі.
Метод для відкладеного виконання коду через певний час.
Метод для циклічного виконання коду через заданий інтервал.
Через process.on('uncaughtException', callback)
для глобального перехоплення помилок.
Через process.on('unhandledRejection', callback)
.
Клас Node.js для створення кастомних REPL-консолей.
setImmediate
виконується після I/O, а setTimeout
після заданого часу.
Через const fs = require('fs').promises
для асинхронної роботи з файлами з промісами.
readFileSync
— синхронне читання, блокує event loop, readFile
— асинхронне.
Аналогічно, синхронне і асинхронне записування файлів.
Модуль для роботи з шляхами файлів і директорій.
Через path.join('dir', 'file.txt')
.
Через path.extname('file.txt')
.
Модуль для отримання інформації про операційну систему.
require('os').cpus().length
Використання кількох процесів для обробки запитів на всіх ядрах CPU.
Запускає усі колбеки, підписані на певну подію.
Масив аргументів командного рядка.
node -v
або process.version
process.platform
повертає ОС, наприклад 'win32'
або 'linux'
.
Об’єкт, який кешує модулі, щоб не підвантажувати їх повторно.
Через delete require.cache[require.resolve('module')]
Глобальний об’єкт, доступний у будь-якому контексті.
Метод для генерації унікального UUID.
Модуль для паралельного виконання коду у фонових потоках.
Через new Worker('file.js')
з модуля worker_threads
.
Через postMessage
та події 'message'
.
Модуль для вимірювання продуктивності коду.
Через const { performance } = require('perf_hooks')
і performance.now()
.
Модуль для відладки Node.js через Chrome DevTools.
Запуском Node.js з --inspect
або --inspect-brk
.
Модуль для обробки помилок у групах асинхронних операцій, застарілий.
Використовувати helmet, rate-limit, перевірку даних і HTTPS.
Метод для отримання статистики використаної пам’яті Node.js.
Профілювання, використання асинхронного коду, кешування, кластеризація, оптимізація запитів і I/O.