Express.js: детальний розбір роботи фреймворку

Express.js — це мінімалістичний веб-фреймворк для Node.js, який використовується для створення серверних застосунків і API. Він спрощує процес роботи з HTTP-запитами та управління маршрутами, а також дозволяє легко інтегрувати сторонні бібліотеки.


📌 1. Основи Express.js

Express.js працює на основі подій і використовує модель запит-відповідь, яка дозволяє ефективно обробляти запити клієнтів і повертати відповідь.

Основні компоненти:

  1. Маршрутизація (Routing) – керування шляхами URL.
  2. Middleware – проміжні обробники, які змінюють запит або відповідь.
  3. Шаблонізація (View Engines) – генерація HTML-сторінок (опціонально).
  4. Підключення до бази даних – інтеграція з MongoDB, MySQL, PostgreSQL тощо.
  5. Обробка помилок – управління винятковими ситуаціями.

🚀 2. Встановлення та створення першого серверу

Щоб розпочати роботу, потрібно встановити Express:

npm init -y  # Ініціалізація проєкту
npm install express  # Встановлення Express

Створимо простий сервер:

const express = require('express');  // Підключення Express
const app = express();  // Створення екземпляру сервера

app.get('/', (req, res) => {
    res.send('Привіт, світ!');  // Відповідь на GET-запит
});

app.listen(3000, () => {
    console.log('Сервер запущено на порту 3000');
});

📝 Як це працює?

  1. Створюємо сервер за допомогою express().
  2. Додаємо маршрут app.get('/'), який відповідає на запити.
  3. Викликаємо app.listen(3000), щоб запустити сервер.

🔄 3. Маршрутизація (Routing)

Express дозволяє керувати маршрутами за допомогою таких методів:

  • app.get() – для отримання даних.
  • app.post() – для надсилання даних.
  • app.put() – для оновлення даних.
  • app.delete() – для видалення даних.

Приклад маршрутів:

app.get('/users', (req, res) => {
    res.send('Список користувачів');
});

app.post('/users', (req, res) => {
    res.send('Користувача створено');
});

app.put('/users/:id', (req, res) => {
    res.send(`Користувач з ID ${req.params.id} оновлений`);
});

app.delete('/users/:id', (req, res) => {
    res.send(`Користувач з ID ${req.params.id} видалений`);
});

🔹 req.params.id – отримує параметр ID з URL.


4. Middleware (проміжні обробники)

Middleware — це функції, які виконуються між отриманням запиту та надсиланням відповіді. Вони можуть: ✔ Обробляти запити
✔ Змінювати дані
✔ Захищати маршрути

Приклад Middleware:

app.use((req, res, next) => {
    console.log(`Запит на ${req.url} - ${new Date().toISOString()}`);
    next();  // Передаємо управління далі
});

Вбудовані Middleware:

  • express.json() – для роботи з JSON.
  • express.urlencoded({ extended: true }) – для обробки form-data.
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

🔗 5. Робота з базами даних

Express.js не має вбудованої підтримки баз даних, але легко інтегрується з MongoDB, PostgreSQL, MySQL тощо.

Приклад з MongoDB (Mongoose):

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/mydb', {
    useNewUrlParser: true,
    useUnifiedTopology: true
}).then(() => console.log('MongoDB підключено'))
  .catch(err => console.error(err));

const UserSchema = new mongoose.Schema({ name: String, age: Number });
const User = mongoose.model('User', UserSchema);

app.post('/users', async (req, res) => {
    const newUser = new User(req.body);
    await newUser.save();
    res.send('Користувача створено');
});

🔹 Цей код підключається до MongoDB, створює схему та додає користувача.


🎭 6. Використання шаблонізаторів

Express підтримує шаблонні движки (Pug, EJS, Handlebars), які дозволяють створювати динамічні сторінки.

Приклад з Pug:

npm install pug
app.set('view engine', 'pug');

app.get('/hello', (req, res) => {
    res.render('index', { title: 'Привіт', message: 'Ласкаво просимо!' });
});

🔹 Створюємо views/index.pug:

html
  head
    title= title
  body
    h1= message

🚧 7. Обробка помилок

Якщо маршруту не існує, можна створити Middleware для обробки помилок:

app.use((req, res, next) => {
    res.status(404).send('Сторінка не знайдена');
});

app.use((err, req, res, next) => {
    console.error(err.stack);
    res.status(500).send('Щось пішло не так!');
});

📡 8. Статичні файли

Express дозволяє обслуговувати CSS, JS, зображення:

app.use(express.static('public'));

Тепер можна використовувати файли в public/, наприклад public/style.css.


🚀 9. Запуск у продакшені

  1. Використовуйте PM2 для стабільного запуску:
    npm install -g pm2
    pm2 start server.js
    
  2. Використовуйте nginx або Apache для реверс-проксі.

🏁 Висновок

Express.js — це гнучкий, легкий і швидкий фреймворк для створення веб-додатків і API. Його основні переваги: ✔ Мінімалізм
✔ Гнучка маршрутизація
✔ Робота з Middleware
✔ Інтеграція з базами даних
✔ Підтримка шаблонізаторів

Якщо коротко, то Express.js – це інструмент, який робить створення серверів простим і ефективним! 🚀

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *