Создавал ли роутер в Express.js?

Ответ

Да, постоянно. В 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, подключил и всё. Никакой головной боли.
  • Гибкость — хуй в пальто! К каждому роутеру можно прикрутить свои, специфичные мидлвары. Например, к админскому роутеру — проверку прав, а к публичному — нет. Удобно же, ёба!

В общем, если не используешь роутеры — ты, прости, распиздяй. С ними жить проще, честное слово.