嗨我对get route函数的语法感到困惑,似乎有2个版本 这是一些示例代码
第一个:
app.get('/users', function(req,res){
...
});
第二个:
app.get('users/:name', function(req,res,next){
...
if(users[req.params.name])
....
else
next()
});
我很困惑第二个中的下一个功能是什么。为什么在第一个中没有必要
由于
答案 0 :(得分:0)
备份一下,看看express作为中间件堆栈。从字面上看,是一个堆栈。
您有一系列app.use
,app.get
和app.post
来电。它们共同构成了一条链条。当请求进入时,表明哪些中间件功能与URL模式匹配,并调用第一个以及对下一个中间件的引用。这就是独立的独立中间件对象如何链接的方式。
例如,有一个中间件可以解析查询字符串并将其存储为req.query
中的对象。有一个中间件可以解析Cookie
标头并创建cookie对象。有一个中间件提供访问日志记录。同样,这些链接在一起。如果中间件函数是独立的,则它们执行其工作,然后通过调用next()
将控制权传递给链中的下一个链接。
app.use(express.logger();
app.use(express.responseTime());
app.use(express.compress());
app.use(express.json());
app.use(express.urlencoded());
app.use(express.cookieParser());
app.use(express.session());
app.use(i18n.handle);
app.use(app.router);
路由不必使用next的原因是路由通常是链的末尾。路线后没什么可做的。