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;
};
Просто чтобы что-то сделать. Я сделал проекты без папки контроллеров и разместил всю логику в одном месте.