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
匹配,并且没有调用next
callback函数, 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更多。