Skip to main content

Робота з сервером

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 підтримує роботу практично з усіма типами БД:

ТипПриклади бібліотек
SQLpg (PostgreSQL), mysql2, sequelize, prisma
NoSQLmongoose (MongoDB), redis, couchdb
In-memoryredis, 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-пакетиТак

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.