什么是替代传递数组到app.get()的第一个参数?

过去,你可以做这样的事情:

app.get(['/', '/dashboard'], (req, res, next) => { ... }); 

为了有多个使用相同的路由处理程序的路线。

几个堆栈溢出答案表明,这种行为已被弃用,不应该再被使用。

除了一个丑陋的正则expression式或者一个半破解类将函数放入一个variables并将其传递给2个不同的app.get()调用之外,还有一个简单的方法来传递一个数组作为第一个参数吗?

做这样的事情:

 var express = require('express'); var app = express(); var originalExpressGet = app.get; app.get = (function() { var expressApp = app; function turnToArray(args){ var array = []; for(var i = 0; i < args.length; i++){ array.push(args[i]); } return array; } return function(routes, callback) { var args = turnToArray(arguments); if(args.length <= 1){ return originalExpressGet.apply(app, arguments); } if(!Array.isArray(routes)){ routes = [routes]; } args.shift(); routes.forEach(function(route){ originalExpressGet.apply(app, [route].concat(args)); }); } return app; }()); 

这样你仍然使用Express的app.get,但是它允许你使用[]多个路由。 例如,这工作:

 app.get(['/', '/same'], function(req, res){ res.send(true); }); 

这样做也是这样的:

 app.get('/another route', function(req, res){ res.send(true); });