W przeszłości mogłeś zrobić coś takiego:
app.get(["/", "/dashboard"], (req, res, next) => { ... });
aby mieć wiele tras za pomocą tego samego modułu obsługi trasy.
Kilka odpowiedzi przepełnienia stosu wskazuje, że to zachowanie jest przestarzałe i nie należy go już używać.
Oprócz brzydkiego wyrażenia regularnego lub półhakowania, takiego jak umieszczenie funkcji w zmiennej i przekazanie jej do 2 odrębnych app.get()
wywołań, czy istnieje elegancka alternatywa dla przekazania tablicy jako pierwszego argumentu?
Odpowiedzi:
1 dla odpowiedzi № 1Zrób coś takiego:
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;
}());
W ten sposób nadal używasz app.get express, ale pozwala ci to używać [] do wielu tras. Na przykład działa to:
app.get(["/", "/same"], function(req, res){
res.send(true);
});
I tak robi to:
app.get("/another route", function(req, res){
res.send(true);
});