Node.js + Express: Маршруты против контроллера

Новое в Node.js и Express, я пытаюсь понять, что два кажется перекрывающимися концепциями, маршрутами против контроллера.

Я видел примеры, которые просто делают app.js + routes/*, этого, кажется, достаточно, чтобы направить различные запросы.

Однако я также вижу, что люди говорят об использовании контроллеров, а некоторые, что подразумевает более формальную модель MVC (???).

Было бы здорово, если бы кто-то помог мне очистить эту тайну, и если у вас есть хороший пример настройки контроллера в инфраструктуре Node.js + Express, это будет здорово!

Спасибо,

Ответ 1

Одна из интересных вещей о Express (и Node в целом) - это не подталкивает к вам много мнений; один из недостатков - это не вызывает у вас никаких мнений. Таким образом, вы свободны (и обязаны!) Самостоятельно настраивать любые такие мнения (шаблоны).

В случае Express вы можете определенно использовать шаблон MVC, и обработчик маршрута, безусловно, может выполнять роль контроллера, если вы этого хотите, но вы должны настроить его таким образом. Большой пример можно найти в папке Экспресс-примеры, называемой mvc. Если вы посмотрите lib/boot.js, вы увидите, как они настроили пример, требующий каждого файла в каталоге controllers, и генерировать маршруты Express муха в зависимости от имени методов, созданных на контроллерах.

Ответ 2

Вы можете просто иметь папку маршрутов или оба. Например, некоторые устанавливают маршруты/пути (например,/user/: id) и связывают их с Get, Post, Put/Update, Delete и т.д., А затем в папке маршрутов:

const subController = require('./../controllers/subController');

Router.use('/subs/:id);

Router
 .route('subs/:id');
 .get(
 subController.getSub
 .patch(
 subController.updateSub
 );

Затем в папке контроллеров:

exports.getSub = (req, res, next) => {
  req.params.id = req.users.id;
};

Просто чтобы что-то сделать. Я сделал проекты без папки контроллеров и разместил всю логику в одном месте.