表达js app.get回调函数

时间:2014-01-23 03:03:43

标签: javascript express get

嗨我对get route函数的语法感到困惑,似乎有2个版本 这是一些示例代码

第一个:

app.get('/users', function(req,res){
     ...
});
第二个:

app.get('users/:name', function(req,res,next){
     ...
     if(users[req.params.name])
      ....
     else
         next()
});

我很困惑第二个中的下一个功能是什么。为什么在第一个中没有必要

由于

1 个答案:

答案 0 :(得分:0)

备份一下,看看express作为中间件堆栈。从字面上看,是一个堆栈。

您有一系列app.useapp.getapp.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的原因是路由通常是链的末尾。路线后没什么可做的。