Що таке Node.js?
Node.js – це середовище виконання JavaScript-коду, яке дозволяє запускати JavaScript поза браузером. Node.js використовує V8 – той самий рушій, що й у Google Chrome, але працює без інтерфейсу браузера.
📌 Основна ідея Node.js – використовувати JavaScript на сервері, що дозволяє будувати швидкі та масштабовані додатки.
Як працює Node.js?
Node.js використовує однопоточну, подієву модель (Event Loop), яка дозволяє виконувати асинхронні операції без блокування.
🔹 Ключові принципи роботи
- Однопотокова модель – виконує код у одному потоці, але може обробляти тисячі запитів одночасно.
- Асинхронність – працює з подіями та зворотними викликами (callbacks, Promises, async/await).
- Подієвий цикл (Event Loop) – керує виконанням асинхронного коду.
- Низьке споживання ресурсів – порівняно з традиційними серверними технологіями (PHP, Java).
Архітектура Node.js
1. V8 Engine (рушій JavaScript)
Node.js використовує V8 – JavaScript-рушій від Google, який компілює JS-код безпосередньо в машинний код.
2. Libuv
Libuv – це бібліотека, яка забезпечує:
- Обробку подій (Event Loop).
- Асинхронну I/O (запити до файлів, мережі, баз даних).
- Роботу з потоками.
3. Event Loop (Подієвий цикл)
Це основа Node.js, яка дозволяє виконувати асинхронні операції без блокування потоку.
🔹 Як працює Event Loop?
- Отримує запити від клієнтів.
- Передає їх у асинхронні API (I/O, БД, HTTP-запити).
- Чекає на завершення асинхронних операцій.
- Викликає callback-функцію після завершення операції.
- Повертається до наступного запиту.
Порівняння Node.js з традиційними серверами
Параметр | Node.js | Apache / PHP |
---|---|---|
Обробка запитів | Однопоточний Event Loop | Новий потік на кожен запит |
Продуктивність | Висока (асинхронна) | Низька при високих навантаженнях |
Асинхронність | Так | Ні (синхронна) |
Споживання ресурсів | Менше пам’яті та CPU | Більше ресурсів через багатопотоковість |
Навантаження | Добре працює з великою кількістю з’єднань | Важко масштабувати |
✅ Node.js ідеальний для реального часу (чати, API, потокові дані).
❌ Не підходить для важких CPU-обчислень.
Установка Node.js
1. Встановлення
Завантажити Node.js можна з офіційного сайту.
Перевірити версію:
node -v
npm -v
Основи коду в Node.js
1. Виконання простого коду
console.log("Привіт, Node.js!");
Запуск у терміналі:
node script.js
2. Створення простого 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 server.js
✅ Сервер працює на порті 3000.
3. Робота з файлами (fs module)
const fs = require('fs');
// Запис у файл
fs.writeFileSync('test.txt', 'Hello, Node.js!');
// Читання файлу
const data = fs.readFileSync('test.txt', 'utf8');
console.log(data);
4. Використання асинхронного коду
const fs = require('fs');
fs.readFile('test.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
✅ Асинхронний код не блокує потік.
Node.js + Express.js
Express.js – це найпопулярніший фреймворк для створення веб-додатків на Node.js.
1. Встановлення Express
npm init -y
npm install express
2. Створення сервера з Express
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Привіт, Express!');
});
app.listen(3000, () => {
console.log('Сервер запущено на http://localhost:3000');
});
✅ Express.js дозволяє швидко створювати API та веб-додатки.
Модулі та npm
Node.js підтримує модульну систему, що дозволяє легко імпортувати та експортувати код.
1. Імпорт модуля
const fs = require('fs'); // Вбудований модуль
const express = require('express'); // npm-модуль
2. Використання package.json
npm init -y
Ця команда створює package.json
для керування залежностями.
Переваги Node.js
✅ Швидка робота завдяки асинхронності.
✅ Один стек технологій (JavaScript для фронтенду і бекенду).
✅ Масштабованість (ідеальний для мікросервісів).
✅ Величезна екосистема пакетів (npm).
✅ Ідеальний для реального часу (чати, стрімінг, API).
Недоліки Node.js
❌ Не підходить для CPU-інтенсивних задач (штучний інтелект, обробка відео).
❌ Однопотокова модель може призвести до проблем при обробці важких запитів.
❌ Callback Hell – складність у керуванні вкладеними функціями (вирішується async/await
).
Де використовується Node.js?
🔹 Чати (WebSocket) – WhatsApp Web, Slack.
🔹 API (REST, GraphQL) – Backend для SPA, мобільних додатків.
🔹 Фінансові сервіси – криптовалютні біржі.
🔹 Мікросервіси – гнучка архітектура серверів.
🔹 Інтернет речей (IoT) – управління пристроями.
Висновок
Node.js – це потужне середовище виконання JavaScript, яке дозволяє створювати швидкі, асинхронні та масштабовані додатки. Завдяки ефективній обробці запитів і великій спільноті воно стало стандартом для реального часу та API.
✅ Якщо потрібна швидкість, масштабованість і сучасний стек – Node.js чудовий вибір! 🚀