Ответ
Да, постоянно. В Express.js роутеры — это основной способ организации маршрутов в модульной структуре. Я создаю отдельные файлы-роутеры для разных сущностей (например, usersRouter.js, productsRouter.js).
Пример модульного роутера для API пользователей:
routes/usersRouter.js
const express = require('express');
const router = express.Router();
const userController = require('../controllers/userController');
// Применяем middleware ко всем маршрутам этого роутера
router.use(authMiddleware);
// GET /api/users
router.get('/', userController.getAllUsers);
// GET /api/users/:id
router.get('/:id', userController.getUserById);
// POST /api/users
router.post('/', userController.createUser);
// PUT /api/users/:id
router.put('/:id', userController.updateUser);
module.exports = router;
Подключение в основном файле приложения (app.js):
const express = require('express');
const usersRouter = require('./routes/usersRouter');
const app = express();
app.use(express.json());
// Все маршруты из usersRouter будут начинаться с /api/users
app.use('/api/users', usersRouter);
Преимущества такого подхода:
- Чистота кода: Логика маршрутов отделена от основной конфигурации приложения.
- Масштабируемость: Легко добавлять новые группы маршрутов.
- Гибкость: К конкретному роутеру можно применять специфичные middleware (например, проверку прав для админ-роутера).
Ответ 18+ 🔞
Э, слушай, а ты знаешь, что в Express.js без роутеров — это как машина без руля? Пизда рулю, короче. Ну то есть, можно, конечно, все маршруты в app.js накидать, но это будет пиздопроебибна такая, что потом сам от себя охуеешь, когда нужно что-то поменять.
Так вот, нормальные пацаны делают так: на каждую сущность — свой файлик-роутер. Типа usersRouter.js, productsRouter.js. Это ж, бля, элементарно, Ватсон! Чистота кода — овердохуища, и масштабируется всё на раз-два.
Смотри, как это выглядит на практике:
routes/usersRouter.js
const express = require('express');
const router = express.Router();
const userController = require('../controllers/userController');
// Применяем middleware ко всем маршрутам этого роутера
router.use(authMiddleware);
// GET /api/users
router.get('/', userController.getAllUsers);
// GET /api/users/:id
router.get('/:id', userController.getUserById);
// POST /api/users
router.post('/', userController.createUser);
// PUT /api/users/:id
router.put('/:id', userController.updateUser);
module.exports = router;
А потом в основном файле (app.js) просто подключаешь эту красоту, как модуль:
const express = require('express');
const usersRouter = require('./routes/usersRouter');
const app = express();
app.use(express.json());
// Все маршруты из usersRouter будут начинаться с /api/users
app.use('/api/users', usersRouter);
И в чём, собственно, кайф-то, ёпта?
- Код чистый, как слеза младенца. Всё по полочкам, логика маршрутов не валяется в одной куче с настройкой сервера. Не надо потом, бля, рыться в этом стоге сена.
- Масштабируется проще простого. Захотел добавить апишку для заказов — создал
ordersRouter.js, подключил и всё. Никакой головной боли. - Гибкость — хуй в пальто! К каждому роутеру можно прикрутить свои, специфичные мидлвары. Например, к админскому роутеру — проверку прав, а к публичному — нет. Удобно же, ёба!
В общем, если не используешь роутеры — ты, прости, распиздяй. С ними жить проще, честное слово.