Node.js + Express:路由与控制器


98

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

我看过一些简单的例子,app.js + route / *似乎足以路由所需的各种请求。

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

如果有人可以帮助我消除这个谜团,并且如果您有一个在Node.js + Express框架中设置控制器的好例子,那就太好了!

谢谢,

Answers:


129

Express(以及一般来说,Node)的优点之一是它不会在您身上引起很多意见。缺点之一是它不会对您产生任何意见。因此,您可以自由(也需要!)自行设置任何此类意见(模式)。

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


2
这个非常聪明的答案的第一段也很好地解释了两个术语。
Frank Nocke

1

您可以只拥有一个路线文件夹,也可以同时拥有。例如,一些设置的路由/路径(例如/ user /:id)并将其连接到Get,Post,Put / Update,Delete等,然后在routes文件夹中:

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

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

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

然后,在controllers文件夹中:

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

只是为了做点什么。我完成了没有controllers文件夹的项目,并将所有逻辑放在一个位置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.