Що таке Node.js і як він працює?
Що таке Node.js?
Node.js — це середовище виконання JavaScript на стороні сервера, побудоване на движку V8 JavaScript від Chrome. Воно дозволяє виконувати JavaScript поза браузером — на серверах, настільних комп'ютерах та в інструментах командного рядка.
Основні характеристики
| Особливість | Опис |
|---|---|
| Середовище виконання | Побудоване на V8 (JS-движок Google Chrome) |
| Неблокуючий I/O | Обробляє багато з'єднань без очікування |
| Однопотокове | Один основний потік + цикл подій |
| Подієво-орієнтоване | Зворотні виклики/Promise реагують на події |
| Кросплатформене | Працює на Linux, macOS, Windows |
Як працює Node.js
Ваш JS код
↓
Node.js APIs (fs, http, crypto…)
↓
libuv (бібліотека C++)
↓
ОС (файлова система, мережа, таймери…)- V8 компілює ваш JavaScript у рідний машинний код
- libuv забезпечує цикл подій та асинхронний I/O через пул потоків
- Node.js Core APIs з'єднують JS та ОС
Простий приклад 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('Сервер працює на http://localhost:3000');
});Чому Node.js?
- Швидкий — V8 + неблокуючий I/O обробляє тисячі одночасних з'єднань
- Уніфікована мова — JavaScript як на фронтенді, так і на бекенді
- Велика екосистема — npm має понад 2 мільйони пакетів
- Чудово підходить для реального часу — чати, сповіщення, потокове відео
- Дружній до мікросервісів — легкий та швидкий у запуску
Коли НЕ використовувати Node.js
Node.js не є ідеальним для завдань, що вимагають інтенсивних обчислень (важкі обчислення, кодування відео, обробка зображень), оскільки працює на одному потоці. Для таких випадків розгляньте Go, Rust або використовуйте Worker Threads в Node.js.
Резюме
Node.js = середовище виконання JavaScript + движок V8 + цикл подій libuv + неблокуючий I/O. Він відмінно підходить для завдань, пов'язаних з I/O (API, додатки в реальному часі, мікросервіси) і є основою сучасної екосистеми бекенду JavaScript.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.