106

Node.js 和 Express 的新手,我试图理解这两个似乎重叠的概念,路由与控制器。

我见过简单的例子 app.js + routes/*,这似乎足以路由所需的各种请求。

但是,我也看到人们在谈论使用控制器,其中一些暗示了更正式的 MVC 模型 (???)。

如果有人能帮我解开这个谜团,并且如果你有一个在 Node.js + Express 框架中设置控制器的好例子,那就太好了!

谢谢,

4

2 回答 2

137

关于 Express(和一般的 Node)的一个很酷的事情是它不会向你推送很多意见。缺点之一是它不会对您提出任何意见。因此,您可以自由(并且被要求!)自行设置任何此类意见(模式)。

在 Express 的情况下,您绝对可以使用 MVC 模式,如果您愿意,路由处理程序当然可以充当控制器的角色——但您必须以这种方式进行设置。在Express 示例文件夹中可以找到一个很好的示例,名为mvc. 如果您查看lib/boot.js,您可以看到他们如何设置示例以要求controllers目录中的每个文件,并根据在控制器上创建的方法的名称动态生成 Express 路由。

于 2012-06-18T04:44:01.490 回答
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;
};

只是为了做点什么。我已经完成了没有控制器文件夹的项目,并将所有逻辑放在一个地方。

于 2019-08-19T17:40:49.403 回答