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

Node.js

Матеріал з K2 ERP Wiki

npm застосовується для для:

});

Docker корисний для Node.js через:

TypeScript і Node.js

Він описує: </syntaxhighlight>

! Типовий сценарій

критично: повільний Node.js API часто гальмує не через JavaScript, а через базу даних, зовнішній API, неправильні індекси або блокування event loop. У Node.js JavaScript здатна:

node --inspect server.js

  • reproducible environment;
  • однакову версію Node.js;
  • CI/CD;
  • deployment;
  • dependency isolation;
  • multi-stage builds;
  • production images;
  • локальні dev stacks. console.log(stdout);

Підказка: найкращий перший Node.js-проєкт — невеликий API з одним endpoint, validation, логуванням і підключенням до бази даних. Node.js

Хороші практики Node.js

Цікаві факти про Node.js

Node.js застосовується для для:

|- | історія продукту | Старіший і найпоширеніший runtime | Новіший runtime |- | Package ecosystem | npm як основа | Має власні підходи й npm-сумісність у частині сценаріїв |- | TypeScript | Через tooling | TypeScript-first підхід |- | Permissions | Традиційно більш відкритий runtime | Сильніша permission model за замовчуванням |}

"dev": "node --watch server.js",

</syntaxhighlight>

</syntaxhighlight>

import { readFile } from 'node:fs/promises';

npx дає можливість запускати package binaries без постійного глобального встановлення. Bun — інший JavaScript runtime і toolkit, який робить акцент на швидкості, bundling, package management і developer experience. * Node.js Download page. Python

File system API

Коли варто використовувати Node.js

  • PostgreSQL;
  • MySQL;
  • MariaDB;
  • SQLite;
  • MongoDB;
  • Redis;
  • Elasticsearch/OpenSearch;
  • DynamoDB;
  • Cassandra;
  • ClickHouse.

function formatUser(user: User): string {

Dependency security

res.writeHead(404, { 'content-type': 'application/json' });
  • глобальні caches без limit;
  • event listeners, які не видаляються;
  • closures з великими об’єктами;
  • queues без backpressure;
  • збереження request objects;
  • streams без правильного завершення;
  • неконтрольований in-memory state.

Практична роль: вбудований test runner зменшує потребу одразу ставити сторонній framework для простих тестів. !

Child processes

Перевага: Fastify часто обирають, коли хочеться сучаснішого підходу до API, ніж мінімалістичний Express. * CLI wrappers;

  • automation;
  • build tools;
  • запуску системних команд;
  • parallel work;
  • інтеграції з legacy tools. Практична роль: Prisma часто обирають, коли хочуть зручний typed шар між TypeScript-кодом і базою даних. Для нового проєкту краще одразу вибрати стиль і дотримуватися його. * Node.js використовує V8 — JavaScript engine, який так само функціонує в Chrome. Node.js-проєкти часто мають багато dependencies.
    <div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">
    
     "version": "1.0.0",
    
    ! Приклад:
    <div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">
    Node.js підтримує debugging через inspector. :contentReference [oaicite:1]{index=1}
    });
    Потрібно контролювати:
    |-
    | Мова
    | 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
    |}
    
    <div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">
    Node.js часто потрібен навіть у frontend-проєктах, бо dev tools працюють на Node.js. Критерій
    
    <div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">
    
    * static typing;
    * кращий autocomplete;
    * type checking;
    * interfaces;
    * safer refactoring;
    * кращу документацію через types;
    * зручність у великих codebases.== конкурентні переваги Node.js ==
    '''критично:''' хороший API  це не тільки routes.</div>
    const app = express();
    
    Приклад простого сервера:
    
    </div>
    
    <div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">
    
    * встановлення packages;
    * керування dependencies;
    * запуску scripts;
    * публікації packages;
    * semantic versioning;
    * package-lock;
    * development tooling;
    * build pipelines. '''package-lock.json''' фіксує точні версії dependencies. .<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;">
    
    * використовувати 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. Він базується на V8 JavaScript engine, має велику npm-екосистему, сильну підтримку asynchronous I/O і добре підходить для JavaScript/TypeScript-first команд. '''критично:''' змішування CommonJS і ES Modules здатна створювати плутанину. Це здатна створити command injection. '''Основна ідея:''' Node.js дає можливість писати backend, API, CLI й серверні скрипти тією ж мовою JavaScript, яку використовують у frontend-розробці. * Багато frontend-інструментів працюють на Node.js, навіть якщо фінальний сайт запускається в браузері.
    
});

Цікавий факт: навіть якщо сайт функціонує в браузері, його build system майже завжди функціонує на Node.js. Node.js

return res.status(404).json({ error: 'User not found' });

Node.js добре підходить, якщо потрібно:

Debugging корисний для:

  • breakpoints;
  • memory leaks;
  • performance issues;
  • async stack traces;
  • API bugs;
  • local development;
  • profiling.

import { createServer } from 'node:http';

критично: не логувати паролі, access tokens, приватні ключі або повні персональні інформаційні дані. PHP Worker threads дозволяють запускати JavaScript у додаткових потоках для CPU-bound задач. } Головна перевага: Node.js дає можливість будувати повний web stack навколо JavaScript і TypeScript. LTS-версії зазвичай обирають для production, а Current-версії — для тестування нових можливостей і раннього ознайомлення. const fs = require('node:fs');

Security

COPY package*.json ./

Поширені помилки:

 return;

</div>

 "scripts": {

'''Найлюдяніший факт:''' Node.js  це причина, чому JavaScript-розробник здатна одного дня писати кнопку в браузері, наступного  API для цієї кнопки, а потім ще й CLI для деплою. :contentReference [oaicite:3]{index=3}
<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">
COPY . До Node.js JavaScript здебільшого сприймали як мову для браузера: кнопки, форми, анімації, взаємодія зі сторінкою. * routing;
* controllers;
* validation;
* authentication;
* authorization;
* database access;
* error handling;
* logging;
* rate limiting;
* OpenAPI documentation;
* tests. "type": "module",

== Обмеження Node.js ==
'''TypeScript''' дуже часто використовують із Node.js. Критерій

 res.end(JSON.stringify({ ok: true }));
'''NestJS'''  framework для Node.js, який використовує TypeScript і архітектурні ідеї на кшталт modules, controllers, providers і dependency injection. import { createServer } from 'node:http';
}
== CommonJS і ES Modules ==

<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">
<div style="background:#fdecea; border-left:6px solid #e74c3c; padding:12px; margin:12px 0;">
npx eslint .== WebSocket і real-time ==
== V8 JavaScript Engine ==
'''Головне правило:''' хороший Node.js-проєкт  це не без зусиль `npm install` і server.js, а контроль версій, dependencies, безпеки, логів, тестів і production behavior.=== Serverless function ===

</div>

* reproducible installs;
* CI/CD;
* security audits;
* dependency review;
* однакових builds;
* troubleshooting;
* team consistency. '''Практична роль:''' console.log корисний, але debugger часто швидше показує, що реально відбувається в коді. `document.querySelector`  це браузерна історія продукту, а не стандартний Node.js API. const content = await readFile('data.txt', 'utf8');
<syntaxhighlight lang="javascript">
</div>

'''Практична роль:''' npx зручний, коли потрібно оперативно запустити інструмент, не засмічуючи систему глобальними пакетами. import test from 'node:test';

{{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 задач
}}

test('adds numbers', () => { Asynchronous I/O означає, що програма не чекає пасивно завершення повільної операції, а здатна продовжувати роботу й повернутися до результату пізніше. ! * Node.js Releases. Гілка

Коли Node.js здатна бути невдалим вибором

Висновок

Приклад Dockerfile: Node.js і браузер виконують JavaScript, але дають різні API. :contentReference [oaicite:4]{index=4}

  • Node.js здатна створити HTTP server без стороннього framework.

};

Практична роль: Node.js здатна створити web server без сторонніх бібліотек, але frameworks спрощують routing, middleware й validation. Deno — сучасне JavaScript/TypeScript runtime, створене як альтернатива Node.js із іншими defaults. |- | базовий фокус | 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 |}

! Приклад endpoint:

  • parsing JavaScript;
  • execution JavaScript code;
  • JIT compilation;
  • memory management;
  • garbage collection;
  • ECMAScript features;
  • WebAssembly у відповідних сценаріях;
  • runtime performance. Основні конкурентні переваги Node.js:

import { writeFile, readFile } from 'node:fs/promises';

критично: Node.js чудовий для I/O-heavy задач, але CPU-heavy робота здатна блокувати event loop. Найлюдяніший факт: Node.js зробив JavaScript мовою “від кнопки в браузері до сервера в хмарі”. Воно дає можливість використовувати JavaScript; так само реалізовано API, web-застосунків, command line tools, scripts, real-time сервісів, backend-логіки, automation і DevOps-задач. app.listen(3000, () => {

CommonJS:

module.exports = { name: 'app' };

  • chat;
  • multiplayer state sync у частині backend-сценаріїв;
  • live notifications;
  • dashboards;
  • collaboration tools;
  • support widgets;
  • WebSocket APIs;
  • event streaming. V8 відповідає за:

});

Тематичні мітки

}
</div>

import express from 'express';

* scaffolding;
* одноразових команд;
* запуску local binaries;
* dev tools;
* швидкого старту проєктів. '''Висновок:''' Node.js має найбільшу екосистему й adoption, а Deno цікавий сучаснішими defaults і TypeScript-first філософією. }

Async I/O корисний для:

* плутати 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. Node.js здатна працювати з багатьма базами даних:
'''npm'''  найвідоміший package manager для Node.js-екосистеми. Критерій
<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">

</div>

'''Практична роль:''' asynchronous I/O дає можливість серверу не зависати, поки база даних або файлова платформа відповідає.== Performance ==
console.log('API running on http://localhost:3000');

Практична роль: TypeScript особливо корисний у Node.js-проєктах, де код оперативно росте й простого JavaScript уже мало для контролю помилок. * Node.js особливо сильний у I/O-heavy задачах. Кожна dependency — це частина вашого supply chain. return `${user.id}: ${user.email}`;

офіційний сайт Node.js описує його як free, open-source, cross-platform JavaScript runtime environment, який дає можливість створювати servers, web apps, command line tools і scripts. Практична роль: Express став майже “класичною школою” Node.js backend-розробки.

File system API корисний для:

"dependencies": {

! * великих файлів;

  • HTTP responses;
  • uploads;
  • downloads;
  • compression;
  • logs;
  • data pipelines;
  • video/audio;
  • CSV processing.

}); У браузері JavaScript керує сторінкою. Небезпека: Node.js дає можливість дуже оперативно написати API, але так само оперативно можна створити небезпечний API без validation, auth і нормальної обробки помилок. res.writeHead(200, { 'content-type': 'application/json' });

  • request id;
  • timestamp;
  • level;
  • message;
  • error stack;
  • user/session context без приватних даних;
  • service name;
  • latency;
  • status code. const user = await findUserById(req.params.id);

npm run dev

Див. так само

npx create-vite my-app

res.end(JSON.stringify({ error: 'Not found' }));

Критично: не підставляйте неперевірений user input у shell-команди. Водночас він потребує дисципліни: контроль dependencies, LTS-версії, input validation, security, logging, testing, monitoring, graceful shutdown і уважне ставлення до event loop. * Матеріали щодо Express, Fastify, NestJS, TypeScript, Docker, CI/CD, DevOps, backend JavaScript і web security. * scripts;

  • CLI tools;
  • uploads;
  • configuration files;
  • logs;
  • build tools;
  • static site generation;
  • data processing.=== REST API для web-застосунку ===
RUN npm ci --omit=dev
Node.js має обмеження. * Документація Node.js щодо HTTP, filesystem, streams, worker threads, test runner, modules, permissions, security і performance.== Node.js і Bun ==
</div>
<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">

export const name = 'app';
'''Streams''' у Node.js дозволяють працювати з даними частинами, а не завантажувати все одразу в память.<syntaxhighlight lang="javascript">

== Worker threads ==

 res.json({

== Node.js і frontend frameworks ==

await writeFile('hello.txt', 'Hello Node.js\n');
{| class="wikitable"

Streams корисні для:

server.listen(3000, () => {
<syntaxhighlight lang="javascript">

! Node.js змінив цю роль і показав, що JavaScript здатна працювати на сервері, читати файли, відкривати мережеві зєднання, опрацьовувати HTTP-запити, запускати CLI-інструменти й керувати build-процесами. * typed database access;
* schema modeling;
* migrations;
* autocomplete;
* TypeScript-first backend;
* PostgreSQL/MySQL/SQLite та інших сценаріїв;
* швидкого development.<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">
<syntaxhighlight lang="dockerfile">

Child processes корисні для:

});

  • functions;
  • APIs;
  • database logic;
  • validation;
  • auth;
  • CLI commands;
  • integration scenarios;
  • error handling.
Приклад ідеї:

* 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.</div>

== Logging ==
Fastify корисний для:
<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">
'''Prisma'''  популярний ORM/toolkit для Node.js і TypeScript.<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">

</div>

На офіційній сторінці завантаження Node.js актуально вказано v24.15.0 як Latest LTS і v26.1.0 як Latest Release. USER app

Приклад Express API

Проста аналогія: JavaScript — це текст п’єси, V8 — актор і режисер виконання, а Node.js — сцена з доступом до файлів, мережі й системних можливостей.

});

import fs from 'node:fs'; package.json — центральний файл Node.js-проєкту. "start": "node server.js"

Приклад: Приклад:

TypeScript дає:

Цікавий момент: Node.js здатна обслуговувати багато одночасних з’єднань не тому, що “має нескінченно потоків”, а тому, що добре функціонує з неблокуючим I/O.

! const server = createServer((req, res) => {

Приклади сценаріїв використання

Критично: найбільша небезпека Node.js-проєкту часто не в самому Node.js, а в залежностях, secrets, input validation і неправильній auth-логіці. Це validation, permissions, errors, logs, tests і documentation.

Memory leak у Node.js здатна виникати через: Node.js через WebSocket підтримує багато активних з’єднань і надсилає повідомлення користувачам у реальному часі. Vite, ESLint, Prettier, TypeScript compiler і test runner працюють у Node.js-середовищі. console.log('Server running on http://localhost:3000');

WORKDIR /app

* enterprise Node.js;
* великих backend-сервісів;
* TypeScript-first команд;
* structured architecture;
* REST API;
* GraphQL;
* microservices;
* testing;
* dependency injection.<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">
Event loop важливий для:
== HTTP server ==
|-
| ERP-платформа
| Найбільша й найзріліша
| оперативно розвивається
|-
| Runtime
| V8
| JavaScriptCore
|-
| Tooling
| npm, node, ecosystem tools
| runtime + bundler + package manager у одному toolkit
|-
| Production maturity
| Дуже широка
| Залежить від сценарію й сумісності
|}

Тести можуть перевіряти:
 assert.equal(2 + 2, 4);
</div>

Node.js запускає коротку функцію в cloud platform для обробки webhook, API-запиту або background task.<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">

Node.js підтримує дві основні module systems:
 res.json({ ok: true });
<syntaxhighlight lang="javascript">
Сценарії:

</div>
=== CLI tool ===
'''Головна думка:''' Node.js перетворив JavaScript із мови браузера на універсальний інструмент для серверів, API, CLI й сучасної web-інфраструктури. const server = createServer((req, res) => {

npm init -y

* 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. email: string;
:contentReference [oaicite:2]{index=2}

ES Modules:

Node.js і Python

</syntaxhighlight>

received: req.body

</syntaxhighlight>

Node.js — це open source JavaScript runtime, який дає можливість запускати JavaScript поза браузером і створювати servers, web apps, CLI tools, scripts, API, real-time сервіси й backend-застосунки.

npm

CMD ["node", "server.js"]

NestJS підходить для:

  • asynchronous I/O;
  • HTTP servers;
  • timers;
  • promises;
  • callbacks;
  • non-blocking operations;
  • network requests;
  • filesystem operations;
  • high concurrency. });
Express.js — один із найпопулярніших web framework для Node.js. {

</syntaxhighlight>

 console.log('API running on port 3000');

<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">

Розробник пише command line tool на Node.js для генерації файлів, запуску scripts або автоматизації проєкту. це вільне, open source і cross-platform середовище виконання JavaScript поза браузером виступає ключовою рисою серверів забезпечується через '''Node.js'''. Приклад:
== Node.js і браузерний JavaScript ==
'''Перевага:''' Node.js особливо зручний там, де команда вже добре знає JavaScript і хоче використовувати одну мову для frontend, backend і tooling. * V8 official website. Приклад:
== Express.js ==
|-
| Node.js 24 LTS
| Production, стабільні застосунки, довша технічна підтримка
|-
| Node.js 26 Current
| Тестування нових можливостей, експерименти, підготовка до майбутнього LTS
|}

'''V8'''  це JavaScript engine, який виконує JavaScript-код. Критерій
Приклад:
<div style="background:#e8f8f5; border-left:6px solid #16a085; padding:12px; margin:12px 0;">
|-
| Browser
| DOM, window, document, Web APIs, rendering page
|-
| Node.js
| filesystem, network, process, streams, child processes, server APIs
|}

});

* читати й писати файли;
* запускати HTTP-сервер;
* працювати з TCP;
* виконувати scripts;
* працювати з OS process;
* запускати CLI;
* підключатися до databases;
* створювати backend services. * Node.js Documentation. execFile('node', ['--version'], (error, stdout) => {

<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">
console.log(text);
'''Практична роль:''' Node.js часто використовують для автоматизації саме тому, що JavaScript здатна швидко працювати з файлами й JSON. Середовище

=== Frontend tooling ===

'''Практична порада:''' не ставте пакет лише тому, що він вирішує одну дрібну задачу. Логи часто живуть довше, ніж здається. Node.js часто використовують для REST API. Приклад:
</div>
== NestJS ==

<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">

Node.js має вбудований test runner і велику екосистему test tools. Він дає можливість Node.js опрацьовувати багато I/O-операцій без створення окремого потоку для кожного запиту.<syntaxhighlight lang="bash">

Поширені підходи:

 "express": "^5.0.0"
! '''Проста аналогія:''' stream  це як пити воду з крана, а не намагатися спочатку налити весь басейн у склянку. Логи мають включати:

createReadStream('large-file.txt').pipe(process.stdout);

<div style="background:#f0eaff; border-left:6px solid #8e44ad; padding:12px; margin:12px 0;">

* '''CommonJS'''  `require`, `module.exports`;
* '''ES Modules'''  `import`, `export`. '''Висновок:''' PHP дуже сильний у класичному web і CMS, а Node.js  у JavaScript-first API, real-time і tooling-сценаріях. Офіційна документація Node.js пояснює, що V8  рушій JavaScript, який powers Google Chrome, а так само застосовують, коли потрібно в Node.js.

Node.js застосовується для для:

Перевага: event-driven модель Node.js добре пасує задачам, де багато клієнтів очікують подій у реальному часі.
</div>

Node.js добре підходить для real-time застосунків. app.get('/health', (req, res) => {
{| class="wikitable"
'''Практична роль:''' Docker дає можливість не сперечатися, у кого яка реліз системи Node.js стоїть локально.== Streams ==
<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">

Worker threads корисні для:

Express застосовується для для:

Практична порада: Node.js варто обирати, коли головна задача — багато I/O, API, realtime або JavaScript/TypeScript-first розробка програмного забезпечення. type User = {

Приклад:

  • 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.</syntaxhighlight>

server.listen(3000, () => {

Node.js і Deno

критично: у Node.js немає DOM за замовчуванням. * `latest` Node.js не завжди найкращий вибір для production; LTS зазвичай безпечніший для стабільних систем. * офіційний сайт Node.js. Node.js

Database access

  • швидких API;
  • JSON services;
  • schema validation;
  • plugins;
  • TypeScript-friendly backend;
  • structured logging;
  • production services. Node.js найкраще розкривається в I/O-heavy задачах: API, WebSocket, serverless, tooling, automation і backend for frontend. });

Node.js має вбудований HTTP-модуль. });

if (!user) {
res.json(user);

Debugging

Безпека Node.js містить багато шарів:

Event loop — одна з ключових ідей Node.js. }, npm install express

res.end('Hello from Node.js');

Рекомендовано:

  • 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 автоматизовано швидкий у всьому. Він сильний у I/O-heavy задачах, але не завжди найкращий для важких CPU-обчислень. {| class="wikitable"

Node.js і PHP

</syntaxhighlight>

Event loop

== Приклад простого HTTP-сервера ==

критично: package.json — це контракт проєкту: як його запускати, які залежності потрібні й яку поведінку очікує команда. app.use(express.json());

package-lock.json

Node.js функціонує на базі V8 JavaScript engine — рушія, який виконує JavaScript у Google Chrome і Node.js. Практична порада: для більшості production-проєктів краще брати LTS-гілку Node.js, а не найновіший Current-реліз. Моніторинг пам’яті обов’язковий. Що доступно

Джерела

Node.js часто запускають у Docker.
Node.js запускає Express або Fastify server, приймає HTTP-запити, перевіряє інформаційні дані, функціонує з PostgreSQL і повертає JSON. Node.js-застосунки потребують нормального логування.== Типові помилки початківців ==
</div>
<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">

!== Node.js 24 LTS і Node.js 26 Current ==

'''Критично:''' Node.js-сервер здатна працювати оперативно на старті, але поступово пухнути через memory leak. * package reputation;
* maintainer activity;
* dependency tree;
* lockfile;
* known vulnerabilities;
* typosquatting;
* postinstall scripts;
* supply chain attacks;
* abandoned packages;
* license compatibility. :contentReference [oaicite:5]{index=5}
* Node.js здатна запускати CLI tools, backend APIs, dev servers, build systems і serverless functions.== Prisma ==

});

Типовий REST API містить:

<div style="background:#fdecea; border-left:6px solid #e74c3c; padding:12px; margin:12px 0;">

* REST API;
* routing;
* middleware;
* web servers;
* authentication flows;
* JSON APIs;
* small services;
* backend prototypes;
* production APIs. Node.js performance залежить від:

FROM node:24-alpine

</div>

* heavy computation;
* image processing у частині сценаріїв;
* parsing;
* compression;
* crypto-heavy tasks;
* background CPU work;
* не блокувати event loop. });

</div>
'''Практична роль:''' npm  це не без зусиль магазин бібліотек, а провідний механізм залежностей і scripts у більшості Node.js-проєктів.<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">

* JavaScript на сервері;
* велика npm-екосистема;
* asynchronous I/O;
* добра придатність для API;
* real-time застосунки;
* швидкий старт проєктів;
* багато frameworks;
* TypeScript-friendly ecosystem;
* зручність для CLI tools;
* активна спільнота;
* cross-platform;
* Docker-friendly;
* підходить для serverless;
* одна мова для frontend і backend;
* сильний tooling ecosystem. }

* raw SQL client;
* query builder;
* ORM;
* database driver;
* connection pooling;
* migrations. '''Критично:''' не збирайте SQL через конкатенацію user input. '''Висновок:''' Node.js часто зручніший для JavaScript-first web-команд, а Python  для data, ML, scripting і багатьох backend-сценаріїв. Приклад:

<syntaxhighlight lang="bash">

! Node.js здатна бути не найкращим вибором, якщо:
== Загальний SEO-опис ==
 "name": "example-api",

Він корисний для:

* Node.js дозволив JavaScript вийти з браузера на сервер.== Asynchronous I/O ==
import express from 'express';
import { execFile } from 'node:child_process';

=== Real-time chat ===

== Fastify ==

Prisma корисна для:

Такий сервер корисний для навчання, але в реальних застосунках часто використовують framework.<div style="background:#f0eaff; border-left:6px solid #8e44ad; padding:12px; margin:12px 0;">

</div>

'''Практична роль:''' цей приклад показує, що Node.js уже має базові серверні функції ERP без framework. * Документація npm.== Node.js і Docker ==

== npx ==
 if (req.url === '/health') {
<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">

Цікавий факт

npx корисний для:

if (error) throw error;

критично: endpoint `/echo` підходить для демонстрації, але в production потрібно додати validation і обмеження розміру body. Приклад:

<syntaxhighlight lang="javascript">

Можливі проблеми: Саме тому сучасний JavaScript-світ виглядає так цілісно: одна команда здатна писати frontend на React або Vue, backend на Node.js, build tools на JavaScript і scripts для автоматизації теж на JavaScript.

Node.js здатна запускати зовнішні процеси. Fastify — сучасний Node.js web framework з акцентом на продуктивність, schema-based validation і developer experience. * npm став однією з найбільших package-екосистем у світі JavaScript. Bun

  • основна задача — важкі CPU-обчислення;
  • потрібна low-level system programming;
  • команда не знає JavaScript/TypeScript;
  • важлива максимальна простота dependency tree;
  • потрібні scientific computing або ML-first workflows;
  • застосунок краще лягає на Go, Rust, Java або Python;
  • немає готовності контролювати npm dependencies;
  • потрібна дуже сувора static typing без TypeScript-компромісів.== REST API ==
  • 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 часто неправильно розуміють. критично: Node.js універсальний, але не повинен бути відповіддю на кожну технічну задачу. Deno

app.get('/users/:id', async (req, res) => {

package.json

import { createReadStream } from 'node:fs';

console.log('Server running on http://localhost:3000');

app.use(express.json());

Testing

const text = await readFile('hello.txt', 'utf8');

  • назву пакета;
  • версію;
  • scripts;
  • dependencies;
  • devDependencies;
  • module type;
  • entry point;
  • license;
  • engines;
  • metadata;
  • package manager expectations. через цьому JavaScript став не лише мовою браузера, а й мовою серверної розробки. app.get('/health', (req, res) => {

node --inspect-brk server.js

app.post('/echo', (req, res) => {

  • Vite;
  • Webpack;
  • Next.js;
  • Nuxt;
  • Angular CLI;
  • Vue tooling;
  • React tooling;
  • ESLint;
  • Prettier;
  • TypeScript compiler;
  • test runners;
  • bundlers;
  • dev servers. res.writeHead(200, { 'content-type': 'text/plain; charset=utf-8' });
id: number;
критично: NestJS додає структуру й дисципліну, але для маленького API здатна бути важчим, ніж потрібно.

через Практична роль: lockfile користувачі можуть команді встановлювати однакові dependency versions, а не “приблизно ті самі”. Для цього потрібні workers, окремі процеси або інші мови/сервіси. Використовуйте parameterized queries або ORM/query builder, щоб зменшити ризик SQL injection. Node.js

const app = express();

Memory leaks

console.log(content);

res.json({ ok: true });

import assert from 'node:assert/strict';

app.listen(3000, () => {

  • читання файлів;
  • database queries;
  • HTTP-запитів;
  • network sockets;
  • API calls;
  • streaming;
  • parallel tasks;
  • responsive servers. Висновок: Bun цікавий швидкістю й integrated tooling, але Node.js залишається стандартним вибором для більшості production JavaScript backend-проєктів. * Node.js Learn: V8 JavaScript Engine. RUN addgroup -S app && adduser -S app -G app

Node.js має API для роботи з файлами. * JavaScript

EXPOSE 3000