Node.js
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) => {
Приклади сценаріїв використання
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;
|
: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-застосунки.npmCMD ["node", "server.js"] NestJS підходить для:
|
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 = { Приклад:
server.listen(3000, () => { Node.js і Denoкритично: у Node.js немає DOM за замовчуванням. * `latest` Node.js не завжди найкращий вибір для production; LTS зазвичай безпечніший для стабільних систем. * офіційний сайт Node.js. Node.js Database access
Node.js має вбудований HTTP-модуль. }); if (!user) {
res.json(user); DebuggingБезпека Node.js містить багато шарів: Event loop — одна з ключових ідей Node.js. }, npm install express res.end('Hello from Node.js');
Рекомендовано:
Помилка: думати, що Node.js автоматизовано швидкий у всьому. Він сильний у I/O-heavy задачах, але не завжди найкращий для важких CPU-обчислень. {| class="wikitable" Node.js і PHP</syntaxhighlight> Event loop |
== Приклад простого HTTP-сервера ==
критично: package.json — це контракт проєкту: як його запускати, які залежності потрібні й яку поведінку очікує команда. app.use(express.json()); package-lock.jsonNode.js функціонує на базі V8 JavaScript engine — рушія, який виконує JavaScript у Google Chrome і Node.js. Практична порада: для більшості production-проєктів краще брати LTS-гілку Node.js, а не найновіший Current-реліз. Моніторинг пам’яті обов’язковий. Що доступно Джерела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
app.get('/users/:id', async (req, res) => { package.jsonimport { createReadStream } from 'node:fs'; console.log('Server running on http://localhost:3000');
| |
|---|---|---|---|---|