基于快速文档here,我们可以附加HTTP方法来表达实例,并在路由匹配时执行回调函数。 我们还可以执行多个回调路由处理程序。路由处理程序可以是函数,函数数组或两者的组合形式,如以下示例所示。
app.get('/', function (req, res) {
res.send('GET request to the homepage');
});
或使用数组
var cb0 = function (req, res, next) {
console.log('CB0');
next();
}
var cb1 = function (req, res, next) {
console.log('CB1');
next();
}
var cb2 = function (req, res) {
res.send('Hello from C!');
}
app.get('/example/c', [cb0, cb1, cb2])
但是,在我们的应用程序中,我看到开发人员使用的语法是
app.get('/example/c',cb0, cb1)
注意没有数组[]但是以逗号分隔传递2个回调函数。这很有效。但只是好奇如何?
答案 0 :(得分:0)
它的工作原因是中间件。 check this out
答案 1 :(得分:0)
在Javascript中,无论函数定义是什么,您都可以将任意数量的参数传递给函数调用。例如,可以使用两个以上的参数调用function x(a, b){}
。程序员在事先不知道函数调用将接收多少个参数时,会利用arguments特殊变量。快递(.get,.put,.post等)中的路由功能就是这种情况。他们接受您传入的任意数量的参数,并将它们视为中间件函数,如documentation中所示。