文档内容如下:
app.VERB()方法在Express中提供路由功能, 其中VERB是HTTP动词之一,例如app.post()。多 可以给予回调,所有被平等对待,并且表现得像 中间件,这些回调可能会调用一个例外 next('route')绕过剩余的路由回调。这个 机制可用于在路线上执行前置条件然后通过 当没有理由继续时,控制到后续路线 路线匹配。
他们的意思是“绕过剩余的路线回调?”?我知道next()
会将控制传递给下一个匹配的路由。但是......用next('route')
来控制什么功能......?
答案 0 :(得分:66)
我在5分钟后回答自己的问题时讨厌它。
next('route')
是使用路由中间件时。所以如果你有:
app.get('/forum/:fid', middleware1, middleware2, function(){
// ...
})
函数middleware1()有机会调用next()
将控制权传递给middleware2,或next('route')
将控制权传递给下一个匹配的路由。
答案 1 :(得分:0)
给出的答案解释了它的主要要点。遗憾的是,它比您想象的要直观得多,当它与参数结合使用时有很多特殊情况。只需查看 the app.param test file 中的一些测试用例。举两个例子:
next("route")
处理程序调用 param
,它将跳过引用该 param
处理程序自己的参数名称的所有后续路由。在该测试用例中,它会跳过所有引用 id
参数的路由。...还有更多...
我确信这种 next('route')
杠杆有一个用例,但是,我同意之前的评论,因为它肯定会使事情变得复杂和不直观。