【发布时间】:2013-06-11 23:15:49
【问题描述】:
有没有区别
app.use('/some/path', function(req, res, next() {})
和
app.all('/some/path', function(req, res, next() {})
它们都是只为 /some/path 请求调用的中间件函数,对吧?
【问题讨论】:
标签: javascript node.js express
有没有区别
app.use('/some/path', function(req, res, next() {})
和
app.all('/some/path', function(req, res, next() {})
它们都是只为 /some/path 请求调用的中间件函数,对吧?
【问题讨论】:
标签: javascript node.js express
这两个例子的用法有很大的不同。使用app.use 注册的函数是通用中间件函数,并根据它们在中间件堆栈上的位置进行调用,通常在app.configure 函数内。这种类型的中间件通常放在之前 app.route,错误处理函数除外。
另一方面,app.all 是一个路由功能(通常不称为中间件),它涵盖了所有 HTTP 方法,并且仅在 内部 app.route 被调用。如果您之前的任何路由函数与/some/path 匹配并且没有调用next 回调,则不会执行app.all,因此app.all 函数通常位于路由块的开头。
还有第三种中间件,用于您的路由功能,例如。
app.get('/some/path', middleware1, middleware2, function(req, res, next) {});
这通常用于限制访问或执行与/some/path 路由相关的一般任务。
对于实际应用,您可以同时使用这两个函数,但请注意 app.use 与 /some/path 使用时的行为差异。与 app.get 不同,app.use 在调用匿名函数之前从路由中剥离 /some/path。
您可以在express 的文档中找到更多信息。
【讨论】: