Node.js
Він описує:
},
Проста аналогія: JavaScript — це текст п’єси, V8 — актор і режисер виконання, а Node.js — сцена з доступом до файлів, мережі й системних можливостей.; Що доступно
console.log('API running on port 3000');
return res.status(404).json({ error: 'User not found' });
* reproducible installs;
* CI/CD;
* security audits;
* dependency review;
* однакових builds;
* troubleshooting;
* team consistency.; '''Висновок:''' Node.js часто зручніший для JavaScript-first web-команд, а Python — для data, ML, scripting і багатьох backend-сценаріїв.;{{SEO
|title=Node.js — JavaScript runtime для серверів, API, CLI, backend-розробки й real-time застосунків
|description=Node.js — Wiki-стаття про open source JavaScript runtime environment на базі V8 для створення серверів, API, web apps, command line tools, scripts і backend-сервісів. Розглянуто Node.js 24 LTS, Node.js 26 Current, V8, npm, npx, package.json, event loop, asynchronous I/O, CommonJS, ES Modules, HTTP server, Express, Fastify, NestJS, TypeScript, streams, worker threads, security, performance, Docker, DevOps, переваги, обмеження, цікаві факти і хороші практики.
|keywords=Node.js, NodeJS, Node, JavaScript runtime, V8, Chrome V8, npm, npx, package.json, backend JavaScript, server-side JavaScript, Express.js, Fastify, NestJS, TypeScript, event loop, async I/O, CommonJS, ES Modules, Node.js 24 LTS, Node.js 26, REST API, WebSocket, streams, worker threads, Docker, DevOps
|alternativeTo=PHP для частини web backend задач; Python Flask/FastAPI для JavaScript-first команд; Ruby on Rails у lightweight API сценаріях; Java Spring Boot для простіших backend-сервісів; Go для команд, яким важливі JavaScript-екосистема й npm; Deno; Bun; browser-only JavaScript без server runtime; shell scripts для складніших automation задач
}}
const server = createServer((req, res) => {
<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">
</div>
'''істотно:''' Node.js чудовий для I/O-heavy задач, але CPU-heavy робота має змогу блокувати event loop.; "version": "1.0.0",
<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">
== CommonJS і ES Modules ==
<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">
!; res.json({ ok: true });
</div>
<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">
</div>
Node.js найкраще розкривається в I/O-heavy задачах: API, WebSocket, serverless, tooling, automation і backend for frontend.; '''істотно:''' хороший API — це не тільки routes.; Для нового проєкту краще одразу вибрати стиль і дотримуватися його.; * Node.js використовує V8 — JavaScript engine, який додатково функціонує в Chrome.; Критерій
Node.js через WebSocket підтримує роботу багато активних з’єднань і надсилає повідомлення користувачам у реальному часі.; Node.js має змогу запускати зовнішні процеси.; '''Bun''' — інший JavaScript runtime і toolkit, який робить акцент на швидкості, bundling, package management і developer experience.; '''Практична порада:''' Node.js варто обирати, коли головна задача — багато I/O, API, realtime або JavaScript/TypeScript-first розробка програмного забезпечення.;<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">
{| class="wikitable"
* Node.js дозволив JavaScript вийти з браузера на сервер.;</div>
* PostgreSQL;
* MySQL;
* MariaDB;
* SQLite;
* MongoDB;
* Redis;
* Elasticsearch/OpenSearch;
* DynamoDB;
* Cassandra;
* ClickHouse.; Express застосовується для:
'''істотно:''' повільний Node.js API часто гальмує не через JavaScript, а через базу даних, зовнішній API, неправильні індекси або блокування event loop.; node --inspect-brk server.js
'''Deno''' — сучасне JavaScript/TypeScript runtime, створене як альтернатива Node.js із іншими defaults.;== Prisma ==
Приклад:
npm застосовується для:
import { readFile } from 'node:fs/promises';
<syntaxhighlight lang="json">
* routing;
* controllers;
* validation;
* authentication;
* authorization;
* database access;
* error handling;
* logging;
* rate limiting;
* OpenAPI documentation;
* tests.; });
== Node.js і PHP ==
'''Практична роль:''' цей приклад показує, що Node.js уже має базові серверні функціональні можливості без framework.; email: string;
== Memory leaks ==
Рекомендовано:
Потрібно контролювати:
<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">
* плутати Node.js із браузерним JavaScript;
* не розуміти event loop;
* блокувати сервер важким sync-кодом;
* не обробляти errors у async-коді;
* не використовувати lockfile;
* ставити забагато npm-пакетів;
* зберігати secrets у `.env` і комітити його;
* збирати SQL через рядки;
* не перевіряти user input;
* запускати production на випадковій Current-версії;
* не мати tests;
* не мати graceful shutdown;
* ігнорувати memory leaks;
* не обмежувати CORS;
* думати, що TypeScript автономно захищає runtime data.; });
'''Практична роль:''' npx зручний, коли потрібно оперативно запустити інструмент, не засмічуючи систему глобальними пакетами.;</div>
'''істотно:''' Node.js універсальний, але не повинен бути відповіддю на кожну технічну задачу.; '''Express.js''' — один із найпопулярніших web framework для Node.js.;<div style="background:#fdecea; border-left:6px solid #e74c3c; padding:12px; margin:12px 0;">
<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">
<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">
<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">
* REST API;
* GraphQL API;
* web servers;
* real-time apps;
* WebSocket-сервісів;
* chat applications;
* CLI tools;
* build tools;
* automation scripts;
* backend for frontend;
* server-side rendering;
* microservices;
* serverless functions;
* bots;
* streaming services;
* file processing;
* development tooling;
* DevOps scripts;
* Dockerized applications.; * V8 official website.; Він надає можливість Node.js обробляти багато I/O-операцій без створення окремого потоку для кожного запиту.; Він сильний у I/O-heavy задачах, але не завжди найкращий для важких CPU-обчислень.;== Worker threads ==
== Dependency security ==
File system API корисний для:
</div>
== Загальний характеристика ==
</div>
import { execFile } from 'node:child_process';
<div style="background:#fdecea; border-left:6px solid #e74c3c; padding:12px; margin:12px 0;">
Node.js добре підходить, якщо потрібно:
app.use(express.json());
== TypeScript і Node.js ==
FROM node:24-alpine
</syntaxhighlight>
Fastify корисний для:
CommonJS:
<div style="background:#e8f8f5; border-left:6px solid #16a085; padding:12px; margin:12px 0;">
* breakpoints;
* memory leaks;
* performance issues;
* async stack traces;
* API bugs;
* local development;
* profiling.; execFile('node', ['--version'], (error, stdout) => {
});
* встановлення packages;
* керування dependencies;
* запуску scripts;
* публікації packages;
* semantic versioning;
* package-lock;
* development tooling;
* build pipelines.; COPY .; '''V8''' — це JavaScript engine, який виконує JavaScript-код.;</div>
== REST API ==
'''Asynchronous I/O''' означає, що програма не чекає пасивно завершення повільної операції, а має змогу продовжувати роботу й повернутися до результату пізніше.; "name": "example-api",
<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">
</div>
'''Критично:''' не підставляйте неперевірений user input у shell-команди.;== Debugging ==
* functions;
* APIs;
* database logic;
* validation;
* auth;
* CLI commands;
* integration scenarios;
* error handling.; USER app
== Приклад простого HTTP-сервера ==
== Node.js і Bun ==
const app = express();
if (req.url === '/health') {
* глобальні caches без limit;
* event listeners, які не видаляються;
* closures з великими об’єктами;
* queues без backpressure;
* збереження request objects;
* streams без правильного завершення;
* неконтрольований in-memory state.;== Node.js і Deno ==
Приклад Dockerfile:
* scaffolding;
* одноразових команд;
* запуску local binaries;
* dev tools;
* швидкого старту проєктів.; Event loop важливий для:
}
</div>
<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">
});
<div style="background:#f0eaff; border-left:6px solid #8e44ad; padding:12px; margin:12px 0;">
"start": "node server.js"
'''Критично:''' не збирайте SQL через конкатенацію user input.; :contentReference [oaicite:5]{index=5}
* Node.js має змогу запускати CLI tools, backend APIs, dev servers, build systems і serverless functions.;</div>
console.log('Server running on http://localhost:3000');
Приклад:
'''істотно:''' змішування CommonJS і ES Modules має змогу створювати плутанину.; '''істотно:''' package.json — це контракт проєкту: як його запускати, які залежності потрібні й яку поведінку очікує команда.; * Node.js особливо сильний у I/O-heavy задачах.; :contentReference [oaicite:1]{index=1}
</div>
'''Цікавий момент:''' Node.js має змогу обслуговувати багато одночасних з’єднань не з цієї причини, що “має нескінченно потоків”, а з цієї причини, що добре функціонує з неблокуючим I/O.;== Event loop ==
'''Головне правило:''' хороший Node.js-проєкт — це не без ускладнень `npm install` і server.js, а контроль версій, dependencies, безпеки, логів, тестів і production behavior.; res.json(user);
<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">
'''Критично:''' Node.js-сервер має змогу працювати оперативно на старті, але поступово “пухнути” через memory leak.; Водночас він потребує дисципліни: контроль dependencies, LTS-версії, input validation, security, logging, testing, monitoring, graceful shutdown і уважне ставлення до event loop.; Критерій
!; '''Практична роль:''' Express став майже “класичною школою” Node.js backend-розробки.; '''Event loop''' — одна з ключових ідей Node.js.; * Матеріали щодо Express, Fastify, NestJS, TypeScript, Docker, CI/CD, DevOps, backend JavaScript і web security.; Безпека Node.js охоплює багато шарів:
<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">
</div>
<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">
</div>
<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">
Поширені підходи:
V8 відповідає за:
<syntaxhighlight lang="bash">
<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">
</div>
module.exports = { name: 'app' };
== Коли варто використовувати Node.js ==
Debugging корисний для:
<syntaxhighlight lang="bash">
import { writeFile, readFile } from 'node:fs/promises';
'''NestJS''' — framework для Node.js, який використовує TypeScript і архітектурні ідеї на кшталт modules, controllers, providers і dependency injection.; * `latest` Node.js не завжди найкращий вибір для production; LTS зазвичай безпечніший для стабільних систем.; {| class="wikitable"
import assert from 'node:assert/strict';
== Node.js і браузерний JavaScript ==
NestJS підходить для:
* parsing JavaScript;
* execution JavaScript code;
* JIT compilation;
* memory management;
* garbage collection;
* ECMAScript features;
* WebAssembly у відповідних сценаріях;
* runtime performance.; Приклад ідеї:
* офіційно затверджений сайт Node.js.; Node.js
</div>
Приклад endpoint:
received: req.body
app.get('/users/:id', async (req, res) => {
== Приклад Express API ==
Приклад:
Node.js-застосунки потребують нормального логування.;== HTTP server ==
COPY package*.json ./
Node.js 24 LTS і Node.js 26 Current
- читання файлів;
- database queries;
- HTTP-запитів;
- network sockets;
- API calls;
- streaming;
- parallel tasks;
- responsive servers.; import express from 'express';
Приклад:
Fastify
Він корисний для:
npm run dev
Висновок: Node.js має найбільшу екосистему й adoption, а Deno цікавий сучаснішими defaults і TypeScript-first філософією.;== Node.js і Python == </syntaxhighlight>
console.log(content);
Worker threads корисні для:
Типові помилки початківців
</syntaxhighlight>
|- | історичний розвиток | Старіший і найпоширеніший runtime | Новіший runtime |- | Package ecosystem | npm як основа | Має власні підходи й npm-сумісність у частині сценаріїв |- | TypeScript | Через tooling | TypeScript-first підхід |- | Permissions | Традиційно більш відкритий runtime | Сильніша permission model за замовчуванням |}
Node.js і браузер виконують JavaScript, але дають різні API.; import express from 'express'; await writeFile('hello.txt', 'Hello Node.js\n'); }
!; завдяки наявності цьому JavaScript став не лише мовою браузера, а й мовою серверної розробки.; .; }
Serverless function
npx eslint .; }
Real-time chat
!; "express": "^5.0.0"
Цікаві факти про Node.js
import fs from 'node:fs';
* typed database access;
* schema modeling;
* migrations;
* autocomplete;
* TypeScript-first backend;
* PostgreSQL/MySQL/SQLite та інших сценаріїв;
* швидкого development.; Поширені помилки:
Приклад:
npx create-vite my-app
npx корисний для:
завдяки наявності '''Практична роль:''' lockfile користувачі можуть команді встановлювати однакові dependency versions, а не “приблизно ті самі”.; Node.js часто запускають у Docker.; "dev": "node --watch server.js",
</div>
!; };
Node.js має змогу працювати з багатьма базами даних:
app.get('/health', (req, res) => {
if (!user) {
Висновок
</syntaxhighlight> Помилка: думати, що Node.js автономно швидкий у всьому.; Приклад:
- JavaScript на сервері;
- велика npm-екосистема;
- asynchronous I/O;
- добра придатність для API;
- real-time застосунки;
- швидкий старт проєктів;
- багато frameworks;
- TypeScript-friendly ecosystem;
- зручність для CLI tools;
- активна спільнота;
- cross-platform;
- Docker-friendly;
- підходить для serverless;
- одна мова для frontend і backend;
- сильний tooling ecosystem.;
res.writeHead(200, { 'content-type': 'text/plain; charset=utf-8' }); '''Перевага:''' event-driven модель Node.js добре пасує задачам, де багато клієнтів очікують подій у реальному часі.; Node.js <div style="background:#fdecea; border-left:6px solid #e74c3c; padding:12px; margin:12px 0;"> Node.js запускає коротку функцію в cloud platform для обробки webhook, API-запиту або background task.; Він базується на V8 JavaScript engine, має велику npm-екосистему, сильну підтримку asynchronous I/O і добре підходить для JavaScript/TypeScript-first команд.; Prisma корисна для: '''package-lock.json''' фіксує точні версії dependencies.; У Node.js JavaScript має змогу: <div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;"> </div> * request id; * timestamp; * level; * message; * error stack; * user/session context без приватних даних; * service name; * latency; * status code.; Приклад: <div style="background:#f0eaff; border-left:6px solid #8e44ad; padding:12px; margin:12px 0;"> !; res.writeHead(200, { 'content-type': 'application/json' }); </div> '''Практична роль:''' TypeScript особливо корисний у Node.js-проєктах, де код оперативно росте й простого JavaScript уже мало для контролю помилок.; app.use(express.json()); '''Практична роль:''' console.log корисний, але debugger часто швидше показує, що реально відбувається в коді.; !;<syntaxhighlight lang="javascript"> Node.js має вбудований test runner і велику екосистему test tools.; '''Найлюдяніший факт:''' Node.js зробив JavaScript мовою “від кнопки в браузері до сервера в хмарі”.;
EXPOSE 3000
істотно: не логувати паролі, access tokens, приватні ключі або повні персональні інформаційні дані.;== Тематичні мітки ==
Приклад:
Джерела
Performance
|- | Node.js 24 LTS | Production, стабільні застосунки, довша супровід |- | Node.js 26 Current | Тестування нових можливостей, експерименти, підготовка до майбутнього LTS |}
'''npm''' — найвідоміший package manager для Node.js-екосистеми.; * Node.js Learn: V8 JavaScript Engine.; server.listen(3000, () => {
!; Логи часто живуть довше, ніж здається.; Node.js підтримує роботу дві основні module systems:
<div style="background:#e8f8f5; border-left:6px solid #16a085; padding:12px; margin:12px 0;">
Memory leak у Node.js має змогу виникати через:
Основні переважні аспекти Node.js:
'''Node.js''' — це open source JavaScript runtime, який надає можливість запускати JavaScript поза браузером і створювати servers, web apps, CLI tools, scripts, API, real-time сервіси й backend-застосунки.; Кожна dependency — це частина вашого supply chain.; * Багато frontend-інструментів працюють на Node.js, навіть якщо фінальний сайт запускається в браузері.;</div>
Node.js performance залежить від:
== Database access ==
});
server.listen(3000, () => {
export const name = 'app';
* '''CommonJS''' — `require`, `module.exports`;
* '''ES Modules''' — `import`, `export`.;<syntaxhighlight lang="javascript">
Воно надає можливість використовувати JavaScript; додатково реалізовано API, web-застосунків, command line tools, scripts, real-time сервісів, backend-логіки, automation і DevOps-задач.; !;</div>
На офіційній сторінці завантаження Node.js актуально вказано '''v24.15.0''' як '''Latest LTS''' і '''v26.1.0''' як '''Latest Release'''.; '''істотно:''' endpoint `/echo` підходить для демонстрації, але в production потрібно додати validation і обмеження розміру body.; !;</div>
* raw SQL client;
* query builder;
* ORM;
* database driver;
* connection pooling;
* migrations.; '''Проста аналогія:''' stream — це як пити воду з крана, а не намагатися спочатку налити весь басейн у склянку.; Deno
== package.json ==
</div>
<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">
== Node.js і frontend frameworks ==
Node.js має обмеження.; const text = await readFile('hello.txt', 'utf8');
|-
| програмний пакет
| Найбільша й найзріліша
| оперативно розвивається
|-
| Runtime
| V8
| JavaScriptCore
|-
| Tooling
| npm, node, ecosystem tools
| runtime + bundler + package manager у одному toolkit
|-
| Production maturity
| Дуже широка
| Залежить від сценарію й сумісності
|}
Node.js має API для роботи з файлами.; Node.js змінив цю роль і показав, що JavaScript має змогу працювати на сервері, читати файли, відкривати мережеві з’єднання, обробляти HTTP-запити, запускати CLI-інструменти й керувати build-процесами.;<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">
</div>
* назву пакета;
* версію;
* scripts;
* dependencies;
* devDependencies;
* module type;
* entry point;
* license;
* engines;
* metadata;
* package manager expectations.; Критерій
</div>
const content = await readFile('data.txt', 'utf8');
</div>
* reproducible environment;
* однакову версію Node.js;
* CI/CD;
* deployment;
* dependency isolation;
* multi-stage builds;
* production images;
* локальні dev stacks.; * Node.js Download page.; Гілка
Хороші практики Node.js
- JavaScript
- TypeScript
- V8
- npm
- npx
- Express.js
- Fastify
- NestJS
- REST API
- GraphQL
- WebSocket
- Docker
- PostgreSQL
- Redis
- MongoDB
- Deno
- Bun
- Frontend
- Backend
- DevOps
- CI/CD
- Serverless
- Логування
- Безпека застосунків
- Приватність даних
- Документація
До Node.js JavaScript здебільшого сприймали як мову для браузера: кнопки, форми, анімації, взаємодія зі сторінкою.; assert.equal(2 + 2, 4);
- enterprise Node.js;
- великих backend-сервісів;
- TypeScript-first команд;
- structured architecture;
- REST API;
- GraphQL;
- microservices;
- testing;
- dependency injection.;</syntaxhighlight>
}
</syntaxhighlight>
</div>
* heavy computation;
* image processing у частині сценаріїв;
* parsing;
* compression;
* crypto-heavy tasks;
* background CPU work;
* не блокувати event loop.;<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">
const app = express();
</div>
<syntaxhighlight lang="javascript">
<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">
* використовувати LTS у production;
* фіксувати версію Node.js через `.nvmrc`, Volta або Docker image;
* комітити lockfile;
* використовувати TypeScript у середніх і великих проєктах;
* не блокувати event loop;
* робити input validation;
* використовувати parameterized queries;
* не зберігати secrets у коді;
* оновлювати dependencies;
* писати тести;
* використовувати structured logging;
* додати health endpoint;
* налаштувати graceful shutdown;
* моніторити memory і event loop lag;
* не ставити зайві dependencies;
* запускати production app через process manager або orchestrator.; * CPU-heavy задачі можуть блокувати event loop;
* dependency tree має змогу бути дуже великим;
* npm supply chain потребує уваги;
* async-код має змогу бути складним для debugging;
* memory leaks важко помітити без monitoring;
* не всі задачі виграють від JavaScript;
* погана validation оперативно створює security-ризики;
* різниця CommonJS/ESM іноді плутає;
* занадто багато frameworks і tools ускладнюють вибір;
* single-threaded mental model часто неправильно розуміють.; console.log('API running on http://localhost:3000');
<div style="background:#fdecea; border-left:6px solid #e74c3c; padding:12px; margin:12px 0;">
{| class="wikitable"
* static typing;
* кращий autocomplete;
* type checking;
* interfaces;
* safer refactoring;
* кращу документацію через types;
* зручність у великих codebases.;</div>
== File system API ==
Node.js має вбудований HTTP-модуль.; res.writeHead(404, { 'content-type': 'application/json' });
'''Практична роль:''' Docker надає можливість не сперечатися, у кого яка реліз Node.js стоїть локально.;<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">
<syntaxhighlight lang="javascript">
res.end(JSON.stringify({ ok: true }));
Node.js часто використовують для REST API.;== Express.js ==
'''Критично:''' найбільша небезпека Node.js-проєкту часто не в самому Node.js, а в залежностях, secrets, input validation і неправильній auth-логіці.;<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">
Практична роль: вбудований test runner зменшує потребу одразу ставити сторонній framework для простих тестів.; const fs = require('node:fs');
Практична порада: для більшості production-проєктів краще брати LTS-гілку Node.js, а не найновіший Current-реліз.;Логи мають включати: Перевага: Fastify часто обирають, коли хочеться сучаснішого підходу до API, ніж мінімалістичний Express.; Node.js Node.js застосовується для:
});
== Child processes ==
!; '''Fastify''' — сучасний Node.js web framework з акцентом на продуктивність, schema-based validation і developer experience.; :contentReference [oaicite:4]{index=4}
* Node.js має змогу створити HTTP server без стороннього framework.; `document.querySelector` — це браузерна історичний розвиток, а не стандартний Node.js API.; function formatUser(user: User): string {
{| class="wikitable"
Node.js запускає Express або Fastify server, приймає HTTP-запити, перевіряє інформаційні дані, функціонує з PostgreSQL і повертає JSON.; Середовище
Streams
{
TypeScript дає:
import test from 'node:test';
Головна перевага: Node.js надає можливість будувати повний web stack навколо JavaScript і TypeScript.; !; Vite, ESLint, Prettier, TypeScript compiler і test runner працюють у Node.js-середовищі.; Практична порада: не ставте пакет лише з цієї причини, що він вирішує одну дрібну задачу.;== package-lock.json ==
type User = {
Node.js застосовується для:
npm init -y
- asynchronous I/O;
- HTTP servers;
- timers;
- promises;
- callbacks;
- non-blocking operations;
- network requests;
- filesystem operations;
- high concurrency.; Основна ідея: Node.js надає можливість писати backend, API, CLI й серверні скрипти тією ж мовою JavaScript, яку використовують у frontend-розробці.; package.json — центральний файл Node.js-проєкту.;
офіційно затверджений сайт Node.js описує його як free, open-source, cross-platform JavaScript runtime environment, який надає можливість створювати servers, web apps, command line tools і scripts.; console.log(text);
const server = createServer((req, res) => {
Worker threads дозволяють запускати JavaScript у додаткових потоках для CPU-bound задач.; :contentReference [oaicite:3]{index=3}
істотно: NestJS додає структуру й дисципліну, але для маленького API має змогу бути важчим, ніж потрібно.;== Обмеження Node.js ==
Node.js-проєкти часто мають багато dependencies.; Критерій
return `${user.id}: ${user.email}`;
- Vite;
- Webpack;
- Next.js;
- Nuxt;
- Angular CLI;
- Vue tooling;
- React tooling;
- ESLint;
- Prettier;
- TypeScript compiler;
- test runners;
- bundlers;
- dev servers.; Node.js
TypeScript дуже часто використовують із Node.js.; Такий сервер корисний для навчання, але в реальних застосунках часто використовують framework.; Тести можуть перевіряти:
- CLI wrappers;
- automation;
- build tools;
- запуску системних команд;
- parallel work;
- інтеграції з legacy tools.; !; });
Типовий REST API охоплює: app.get('/health', (req, res) => {
Prisma — популярний ORM/toolkit для Node.js і TypeScript.; Використовуйте parameterized queries або ORM/query builder, щоб зменшити ризик SQL injection.;test('adds numbers', () => {
app.listen(3000, () => {
- основна задача — важкі CPU-обчислення;
- потрібна low-level system programming;
- команда не знає JavaScript/TypeScript;
- важлива максимальна простота dependency tree;
- потрібні scientific computing або ML-first workflows;
- застосунок краще лягає на Go, Rust, Java або Python;
- немає готовності контролювати npm dependencies;
- потрібна дуже сувора static typing без TypeScript-компромісів.; Node.js має змогу бути не найкращим вибором, якщо:
RUN npm ci --omit=dev
console.log(stdout);
</syntaxhighlight>
Найлюдяніший факт: Node.js — це причина, чому JavaScript-розробник має змогу одного дня писати кнопку в браузері, наступного — API для цієї кнопки, а потім ще й CLI для деплою.;=== Frontend tooling ===
- dependency scanning;
- input validation;
- output encoding;
- CSRF у відповідних web-сценаріях;
- CORS configuration;
- rate limiting;
- authentication;
- authorization;
- secrets management;
- SQL injection protection;
- command injection protection;
- SSRF protection;
- secure cookies;
- HTTPS;
- dependency updates;
- safe file uploads.; істотно: у Node.js немає DOM за замовчуванням.; * Node.js Releases.;
V8 JavaScript Engine
Висновок: Bun цікавий швидкістю й integrated tooling, але Node.js залишається стандартним вибором для більшості production JavaScript backend-проєктів.; серверів забезпечується через Node.js — це вільне, open source і cross-platform середовище виконання JavaScript поза браузером.; import { createServer } from 'node:http'; </syntaxhighlight> |- | Browser | DOM, window, document, Web APIs, rendering page |- | Node.js | filesystem, network, process, streams, child processes, server APIs |}
Docker корисний для Node.js через:
- читати й писати файли;
- запускати HTTP-сервер;
- працювати з TCP;
- виконувати scripts;
- працювати з OS process;
- запускати CLI;
- підключатися до databases;
- створювати backend services.; CMD ["node", "server.js"]
'''Практична роль:''' Prisma часто обирають, коли хочуть зручний typed шар між TypeScript-кодом і базою даних.;
Цікавий факт
Приклад:
npm install express
Можливі проблеми:
Async I/O корисний для:
- package reputation;
- maintainer activity;
- dependency tree;
- lockfile;
- known vulnerabilities;
- typosquatting;
- postinstall scripts;
- supply chain attacks;
- abandoned packages;
- license compatibility.;=== CLI tool ===
Практична роль: npm — це не без ускладнень “магазин бібліотек”, а центральний механізм залежностей і scripts у більшості Node.js-проєктів.; res.json({ ok: true });
});
});
- великих файлів;
- HTTP responses;
- uploads;
- downloads;
- compression;
- logs;
- data pipelines;
- video/audio;
- CSV processing.; Це validation, permissions, errors, logs, tests і documentation.;
- REST API;
- real-time app;
- WebSocket service;
- backend for frontend;
- full-stack JavaScript;
- TypeScript backend;
- CLI tool;
- build tool;
- automation script;
- serverless function;
- microservice;
- API gateway;
- SSR framework;
- швидкий prototype;
- команда вже знає JavaScript.; * Node.js Documentation.; Node.js функціонує на базі V8 JavaScript engine — рушія, який виконує JavaScript у Google Chrome і Node.js.; LTS-версії зазвичай обирають для production, а Current-версії — для тестування нових можливостей і раннього ознайомлення.;== Logging ==
Висновок: PHP дуже сильний у класичному web і CMS, а Node.js — у JavaScript-first API, real-time і tooling-сценаріях.; Підказка: найкращий перший Node.js-проєкт — невеликий API з одним endpoint, validation, логуванням і підключенням до бази даних.; Streams у Node.js дозволяють працювати з даними частинами, а не завантажувати все одразу в пам’ять.; Для цього потрібні workers, окремі процеси або інші мови/сервіси.; {| class="wikitable" node --inspect server.js
res.json({
});
createReadStream('large-file.txt').pipe(process.stdout);
Перевага: Node.js особливо зручний там, де команда вже добре знає JavaScript і хоче використовувати одну мову для frontend, backend і tooling.; * Документація npm.; Bun
res.end('Hello from Node.js');
* REST API;
* routing;
* middleware;
* web servers;
* authentication flows;
* JSON APIs;
* small services;
* backend prototypes;
* production APIs.; Моніторинг пам’яті обов’язковий.; Streams корисні для:
=== REST API для web-застосунку ===
</div>
== Див.; додатково ==
== Коли Node.js має змогу бути невдалим вибором ==
* chat;
* multiplayer state sync у частині backend-сценаріїв;
* live notifications;
* dashboards;
* collaboration tools;
* support widgets;
* WebSocket APIs;
* event streaming.; :contentReference [oaicite:2]{index=2}
});
Node.js добре підходить для real-time застосунків.; |-
| Мова
| JavaScript / TypeScript
| Python
|-
| Сильні сторони
| Web APIs, real-time, frontend/backend єдність, npm
| Data science, scripting, backend, automation, ML
|-
| Concurrency
| Event-driven async I/O
| Async є собою, але традиційно багато sync-коду
|-
| Ecosystem
| npm
| PyPI
|}
"dependencies": {
== npm ==
});
res.end(JSON.stringify({ error: 'Not found' }));
app.post('/echo', (req, res) => {
== Node.js і Docker ==
const user = await findUserById(req.params.id);
});
|-
| ключовий фокус
| General server-side JavaScript runtime
| Web-first server-side language
|-
| Real-time
| Сильний через event-driven модель
| Можливо, але не центральний історичний сценарій
|-
| Ecosystem
| npm
| Composer, WordPress/Laravel/Symfony ecosystem
|-
| Типові задачі
| API, realtime, tooling, full-stack JS
| CMS, web apps, Laravel, traditional web hosting
|}
if (error) throw error;
'''Цікавий факт:''' навіть якщо сайт функціонує в браузері, його build system майже завжди функціонує на Node.js.; Приклад:
RUN addgroup -S app && adduser -S app -G app
* scripts;
* CLI tools;
* uploads;
* configuration files;
* logs;
* build tools;
* static site generation;
* data processing.; id: number;
Приклад простого сервера:
!; Python
'''npx''' надає можливість запускати package binaries без постійного глобального встановлення.; Типовий сценарій
== WebSocket і real-time ==
</div>
<syntaxhighlight lang="javascript">
'''Практична роль:''' Node.js часто використовують для автоматизації саме з цієї причини, що JavaScript має змогу без зайвих зусиль працювати з файлами й JSON.; import { createReadStream } from 'node:fs';
== NestJS ==
'''Практична роль:''' Node.js має змогу створити web server без сторонніх бібліотек, але frameworks спрощують routing, middleware й validation.;== переважні аспекти Node.js ==
import { createServer } from 'node:http';
== Asynchronous I/O ==
<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">
== npx ==
* event loop health;
* async I/O;
* database queries;
* JSON parsing;
* memory usage;
* garbage collection;
* CPU-bound tasks;
* clustering/workers;
* caching;
* connection pooling;
* logging overhead;
* network latency.; "type": "module",
!; PHP
* швидких API;
* JSON services;
* schema validation;
* plugins;
* TypeScript-friendly backend;
* structured logging;
* production services.; * Документація Node.js щодо HTTP, filesystem, streams, worker threads, test runner, modules, permissions, security і performance.;</div>
<div style="background:#fef2f2; border-left:6px solid #ef4444; padding:12px; margin:12px 0;">
app.listen(3000, () => {
return;
Child processes корисні для:
console.log('Server running on http://localhost:3000');
Приклади сценаріїв використання
WORKDIR /app
Security
ES Modules:
"scripts": {
!; Офіційна документація Node.js пояснює, що V8 — рушій JavaScript, який powers Google Chrome, а додатково застосовують, коли потрібно в Node.js.; Це має змогу створити command injection.;
Node.js підтримує роботу debugging через inspector.; Сценарії:
Testing
У браузері JavaScript керує сторінкою.; * Node.js
- NodeJS
- Node
- JavaScript runtime
- V8
- Chrome V8
- npm
- npx
- package.json
- Backend JavaScript
- Server-side JavaScript
- Express.js
- Fastify
- NestJS
- TypeScript
- Event loop
- Async I/O
- CommonJS
- ES Modules
- Node.js 24 LTS
- Node.js 26
- REST API
- WebSocket
- Документація