Node.js: детальний огляд та принципи роботи

Що таке Node.js?

Node.js – це середовище виконання JavaScript-коду, яке дозволяє запускати JavaScript поза браузером. Node.js використовує V8 – той самий рушій, що й у Google Chrome, але працює без інтерфейсу браузера.

📌 Основна ідея Node.js – використовувати JavaScript на сервері, що дозволяє будувати швидкі та масштабовані додатки.


Як працює Node.js?

Node.js використовує однопоточну, подієву модель (Event Loop), яка дозволяє виконувати асинхронні операції без блокування.

🔹 Ключові принципи роботи

  1. Однопотокова модель – виконує код у одному потоці, але може обробляти тисячі запитів одночасно.
  2. Асинхронність – працює з подіями та зворотними викликами (callbacks, Promises, async/await).
  3. Подієвий цикл (Event Loop) – керує виконанням асинхронного коду.
  4. Низьке споживання ресурсів – порівняно з традиційними серверними технологіями (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?

  1. Отримує запити від клієнтів.
  2. Передає їх у асинхронні API (I/O, БД, HTTP-запити).
  3. Чекає на завершення асинхронних операцій.
  4. Викликає callback-функцію після завершення операції.
  5. Повертається до наступного запиту.

Порівняння 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 чудовий вибір! 🚀

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *