Express中间件:app.use和app.all

有没有区别

app.use('/some/path', function(req, res, next() {})

app.all('/some/path', function(req, res, next() {})

它们都是中间件函数,只能调用/ some / path请求,对不对?

这两个例子的使用有很大的区别。 使用app.use注册的app.use是一般的中间件函数,被称为适合其在中间件堆栈上的位置,通常在app.configure函数中。 这种types的中间件通常放在app.route 之前 ,除了error handling函数之外。

另一方面, app.all是一个路由function(通常不叫中间件),它覆盖了所有的HTTP方法,只 app.route 被调用。 如果你之前的路由器函数和/some/path匹配,并且没有调用nextcallback函数, app.all将不会被执行,所以app.all函数通常在你的路由块的开头。

还有第三种中间件,用在你的路由function中,例如。

 app.get('/some/path', middleware1, middleware2, function(req, res, next) {}); 

通常用于限制访问或执行与/some/path路由相关的常规任务。

对于实际的应用程序,您可以使用这两个函数,但要注意在使用/some/path时使用app.use时的行为差异。 与app.get不同的app.get ,在调用匿名函数之前, app.use从路由中app.use /some/path

你可以在express的文档中find更多。