Я относительно новичок в Express, и я ищу способ сделать маршруты более многоразовыми. В моем приложении у меня будет довольно много маршрутов, которые можно передать универсальному обработчику, но будут иметь разные шаблоны.Передача дополнительных параметров для обработчиков маршрутов в Express
Пример:
app.get('/about', function(req, res) {
res.render('about.html');
});
app.get('/', function(req, res) {
res.render('home.html');
});
В то время как этот пример сокрушающийся, у меня есть такие 30+ маршруты. То, что я хотел бы быть в состоянии сделать что-то вроде этого:
app.get('/about', generic.render('about.html'));
или иначе как-то передать имя шаблона функции, которая возвращает res.render
Возможно ли это в Express? Все мои попытки обойти этот результат в переменных не определены.
Я предпочел бы не сделать что-то вроде этого, плотно сцеплений моих параметров маршрута и названия шаблона:
app.get('/:template', function(req, res) {
res.render(req.params.template + '.html');
});
Это прекрасно работает. Я не думал о возврате общей функции таким образом. Я приму ваш ответ, как только сайт мне позвонит. Большое спасибо! – Brandon
Одна вещь, которую я не совсем понимаю, - это то, как переменные 'req' и' res' в конечном итоге пробиваются к возвращаемой внутренней функции. Не могли бы вы предложить краткое объяснение? – Brandon
Исправьте меня, если я ошибаюсь, но так ли, что наша функция вызывается первым, устанавливая 'template' и' opts' в область видимости, тогда внутренняя функция возвращается обратно в 'app.get()', где 'req 'и' res', и теперь, когда переменная шаблона находится в области видимости, она может быть передана 'res.render()'? – Brandon