Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Робота з сервером». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Node.js** дозволяє створювати HTTP/HTTPS-сервери, TCP/UDP-з'єднання, WebSocket-сервери й REST/GraphQL API без зовнішніх залежностей, а також працювати з файлами, процесами та базами даних. **Ключове:** вбудовані модулі `http`, `net`, `https`, `fs` і `child_process` покривають більшість серверних задач без фреймворків.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## 1. Створення HTTP-серверів Node.js дозволяє **створювати власні веб-сервери без зовнішніх залежностей**. ```javascript const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello from Node.js server!'); }); server.listen(3000, () => { console.log('Server running at http://localhost:3000'); }); ``` Що це означає: - Ви можете обробляти **запити та відповіді напряму**. - Повний контроль над **заголовками, статусами, маршрутами** тощо. - Легко реалізувати **REST API**, **GraphQL API** або **WebSocket**-сервер. ## 2. Робота з мережею (TCP, UDP, HTTPS) Модуль `net` дозволяє створювати **низькорівневі TCP/UDP-сервери**: ```javascript const net = require('net'); const server = net.createServer(socket => { socket.write('Connected to TCP server'); socket.on('data', data => console.log('Received:', data.toString())); }); server.listen(8080); ``` - Підтримка протоколів **TCP/UDP** - Можливість робити **проксі**, **чат-сервери**, **потокову передачу даних** ## 3. HTTPS та SSL/TLS Node.js дозволяє створювати **захищені HTTPS-сервери**: ```javascript const https = require('https'); const fs = require('fs'); const options = { key: fs.readFileSync('private.key'), cert: fs.readFileSync('certificate.crt') }; https.createServer(options, (req, res) => { res.end('Secure connection established'); }).listen(443); ``` - Підтримка **SSL/TLS-сертифікатів** - Можна створювати безпечні REST API та вебсервіси ## 4. Робота з файловою системою (`fs`) Node.js має вбудовані функції для читання, запису й потокової обробки файлів: ```javascript const fs = require('fs'); // Читання файлу fs.readFile('data.txt', 'utf8', (err, data) => console.log(data)); // Запис файлу fs.writeFileSync('output.txt', 'Server log data'); ``` Це важливо для: - логування, - зберігання даних, - роботи із шаблонами та статичними файлами. ## 5. Робота з процесами та системою (`os`, `process`, `child_process`) Node.js може взаємодіяти з операційною системою: - Отримувати інформацію про сервер: ```javascript const os = require('os'); console.log(os.cpus(), os.freemem()); ``` - Запускати зовнішні команди: ```javascript const { exec } = require('child_process'); exec('ls', (err, stdout) => console.log(stdout)); ``` - Керувати **змінними середовища** та **потоками введення-виведення** ## 6. Маршрутизація та API (через фреймворки) Node.js можна розширити фреймворками: - **Express.js** - створення REST API - **NestJS** - модульна архітектура для складних серверів - **Fastify** - високопродуктивні сервери - **Hapi, Koa** - альтернативи для специфічних задач Приклад Express.js: ```javascript const express = require('express'); const app = express(); app.get('/users', (req, res) => res.json([{ id: 1, name: 'John' }])); app.listen(3000); ``` ## 7. Робота з базами даних Node.js підтримує роботу практично з усіма типами БД: | Тип | Приклади бібліотек | |---|---| | SQL | `pg` (PostgreSQL), `mysql2`, `sequelize`, `prisma` | | NoSQL | `mongoose` (MongoDB), `redis`, `couchdb` | | In-memory | `redis`, `sqlite` | ## 8. Реальний час і WebSocket Node.js ідеально підходить для **реального часу**: ```javascript const { Server } = require('socket.io'); const io = new Server(3000); io.on('connection', socket => { console.log('Client connected'); socket.emit('message', 'Welcome!'); }); ``` Можна робити: - онлайн-чати - ігрові сервери - трекінг у реальному часі - сповіщення та live-оновлення ## 9. Асинхронність і масштабованість - Node.js використовує **event loop** та **асинхронні операції** - він не блокує потік. - Можна обробляти **тисячі з'єднань одночасно**. - Підтримує **кластеризацію** (модуль `cluster`) - розподіл навантаження по ядрах CPU. ## Підсумок | Можливість | Node.js вміє | |---|---| | Створення HTTP/HTTPS-серверів | Так | | Обробка TCP/UDP з'єднань | Так | | Робота з файлами | Так | | Асинхронні операції | Так | | Робота з базами даних | Так | | Веб-сокети та real-time | Так | | Мікросервіси, REST, GraphQL | Так | | Розширення через npm-пакети | Так |Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.