过去,你可以这样做:
app.get(['/', '/dashboard'], (req, res, next) => { ... });
为了使用相同的路由处理程序来拥有多个路由。
多个Stack Overflow答案表明此行为已弃用,不应再使用。
除了丑陋的正则表达式或半黑客攻击,比如将函数放入变量并将其传递给2个不同的app.get()
调用之外,是否只有传递数组作为第一个参数的优雅替代方法?
答案 0 :(得分:1)
做这样的事情:
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);
});