快递js为什么要使用路由器?

7 node.js express

我为什么这样做:

var router = express.Router();

router.get('/', ...)
Run Code Online (Sandbox Code Playgroud)

代替

app.get('/', ...);
Run Code Online (Sandbox Code Playgroud)

这两个人会给我相同的结果.如果app已经是路由器,那么实例化路由器有什么意义呢?

小智 4

如果您正在编写一个非常复杂的应用程序,它会很有用。例如,您可能有一棵这样的树:

routes
    user.js
    post.js
server.js
Run Code Online (Sandbox Code Playgroud)

在 和 中user.jspost.js您将创建一个Router对象并将其导出。您可以将用户的所有路由附加到该路由器 - 比如/user/new, /user/edit, and /user/1, and /post/new, /post/edit, and /post/1

在 中server.js,您将require通过以下方式连接每条路由并连接它们的路由器app.use

app.use('/user', user);
app.use('/post', post);
Run Code Online (Sandbox Code Playgroud)

然后,所有对 的请求/user将被发送到用户路由器,所有对 的请求将/post被发送到后置路由器。然后,您可以注册路由,例如:

router.get('/new', function(req, res) { });
Run Code Online (Sandbox Code Playgroud)

并且它会自动映射到/user/newor /post/new。这很有用,因为它有助于组织您的应用程序,并迫使您将应用程序的一部分分离到一个文件中(关注点分离等等)。这是快递的一个有用的部分,但没有得到很好的宣传。