Перейти до вмісту

Node.js

Матеріал з K2 ERP Wiki
Версія від 09:33, 9 травня 2026, створена R (обговорення | внесок) (Створена сторінка: {{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 loo...)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)

Він описує:

},

Проста аналогія: 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

Головна думка: Node.js перетворив JavaScript із мови браузера на універсальний інструмент для серверів, API, CLI й сучасної web-інфраструктури.; * npm став однією з найбільших package-екосистем у світі JavaScript.;

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

До 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

Практична роль: asynchronous I/O надає можливість серверу не “зависати”, поки база даних або файлова платформа відповідає.;

Висновок: 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"]
Саме з цієї причини сучасний JavaScript-світ виглядає так цілісно: одна команда має змогу писати frontend на React або Vue, backend на Node.js, build tools на JavaScript і scripts для автоматизації теж на JavaScript.; Node.js часто потрібен навіть у frontend-проєктах, бо dev tools працюють на Node.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 ==
Розробник пише command line tool на Node.js для генерації файлів, запуску scripts або автоматизації проєкту.; Небезпека: Node.js надає можливість дуже оперативно написати API, але так само оперативно можна створити небезпечний API без validation, auth і нормальної обробки помилок.;

Висновок: 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