什么's将数组传递给app.get()的第一个参数的替换项
What's the replacement for passing an array to the first argument of app.get()?
在过去,你可以做这样的事情:
app.get(['/', '/dashboard'], (req, res, next) => { ... });
以便使用相同的路由处理程序具有多个路由。
几个堆栈溢出答案表明此行为已被弃用,不应再使用。
除了丑陋的正则表达式或半破解(如将函数放入变量中并将其传递给两个不同的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);
});
相关文章:
- 而循环只设置php中输入字段中的第一个值
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- IE11中的第二个调用取消了第一个Fetch API调用
- Javascript XMLHttpRequest——只有第一个POST请求有效
- 使用javascript或angularjs特定过滤器搜索字符串中第一个img标记的json值
- 将OnClick函数设置为<ul>,最后一个ul是擦除第一个ul-s
- RxJS油门行为;立即获取第一个值
- Angular UI网格:如何通过第一个UI网格中的按钮使第二个UI网格可见
- 选择多个实例中的第一个
- 如何在调用下一个请求之前完成第一个Ajax Get请求
- Lodash:返回对象的第一个键,该对象的值(即数组)中有一个给定的元素(即字符串)
- 看起来第一个console.log是'It’不太对
- 与杜兰达尔合作的第一个JavaScript项目.尝试从第三方 API 获取数据
- 节点发布错误对象的第一个“属性”
- Javascript:表单验证getElementById仅返回第一个id元素
- 仅将 CSS 规则应用于
中的第一个 ,而不分配类/ID - JS在隐藏未定义的值后仅从数组中返回第一个id的值
- 高图表,检测点是否在堆栈中的第一个
- json结果显示第一个值
- 我的设备后退按钮工作不正常,它转到第一个html,但返回到第二个html