Впровадження маршрутів для користувачів, створення та підключення кількох маршрутизаторів, а також організація кращої структури файлів

Коли ви будуєте додатки на Node.js з Express.js, ефективне управління маршрутами є критично важливим для масштабування вашого додатку. Ця стаття охоплює реалізацію маршрутів для користувачів, організацію їх у кілька маршрутизаторів, а також реорганізацію файлів проєкту для зручності та підтримуваності.

pic

1. Реалізація маршрутів для користувачів

У будь-якому веб-додатку управління користувачами є поширеною вимогою. Для обробки завдань, пов'язаних з користувачами, створіть окремі маршрути.

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

const express = require('express');  
const app = express();  

app.use(express.json()); // Проміжне програмне забезпечення для парсингу JSON-запитів  

// Маршрути для користувачів  
app.get('/users', (req, res) => {  
 res.status(200).send('Отримати всіх користувачів');  
});  

app.post('/users', (req, res) => {  
 const user = req.body;  
 res.status(201).send(`Користувач ${user.name} створений!`);  
});  

app.get('/users/:id', (req, res) => {  
 const { id } = req.params;  
 res.status(200).send(`Отримати деталі користувача ${id}`);  
});  

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

app.listen(3000, () => console.log('Сервер працює на http://localhost:3000'));

2. Створення та підключення кількох маршрутизаторів

Якщо ваш додаток росте, зберігання всіх маршрутів в одному файлі стає обтяжливим. Використання Router в Express допомагає розділяти обов'язки і зберігати ваш код модульним.

Кроки для налаштування кількох маршрутизаторів:

  1. Створіть окремий маршрутизатор для користувачів Створіть файл users.js в директорії routes:
const express = require('express');  
const router = express.Router();  

// Визначення маршрутів  
router.get('/', (req, res) => res.send('Отримати всіх користувачів'));  
router.post('/', (req, res) => res.send('Створити користувача'));  
router.get('/:id', (req, res) => res.send(`Отримати користувача ${req.params.id}`));  
router.delete('/:id', (req, res) => res.send(`Видалити користувача ${req.params.id}`));  

module.exports = router;

2. Підключіть маршрутизатор у головному файлі У вашому файлі index.js або app.js:

const express = require('express');  
const userRoutes = require('./routes/users');  

const app = express();  

app.use(express.json()); // Проміжне програмне забезпечення для парсингу JSON-запитів  
app.use('/users', userRoutes); // Підключення маршрутизатора користувачів  

app.listen(3000, () => console.log('Сервер працює на http://localhost:3000'));

3. Краща структура файлів

Добре структурований додаток легший для підтримки і розуміння. Ось рекомендована структура файлів:

project/  
├── routes/  
│ ├── users.js  
│ ├── products.js  
│ └── index.js  
├── controllers/  
│ ├── userController.js  
│ └── productController.js  
├── models/  
│ ├── user.js  
│ └── product.js  
├── middlewares/  
│ └── logger.js  
├── app.js  
└── package.json

Пояснення:

  • routes/: Містить визначення маршрутів для різних сутностей, таких як користувачі або продукти.
  • controllers/: Обробляє основну логіку для кожного маршруту.
  • models/: Визначає моделі та схеми бази даних (якщо ви використовуєте базу даних).
  • middlewares/: Користувацькі проміжні програмні засоби для завдань, таких як логування чи аутентифікація.
  • app.js: Точка входу, де підключаються маршрути та проміжні програмні засоби.

Висновок

Реалізуючи маршрути для користувачів, створюючи кілька маршрутизаторів та застосовуючи кращу структуру файлів, ваш додаток на Express.js стає модульним, масштабованим і легким для підтримки. Ці практики є важливими, коли ваш проєкт розвивається до рівня продуктивного додатку.

Почніть з малого, організуйте з розумом і спостерігайте, як ваш додаток процвітає! 🚀

Перекладено з: Implementing the Users Routes, Creating and Mounting Multiple Routers, and Establishing a Better File Structure

Leave a Reply

Your email address will not be published. Required fields are marked *