将额外参数传递给 Express 中的路由处理程序
Passing extra parameters to route handlers in 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'));
或者以其他方式将模板名称传递给函数 returns res.render
这在 Express 中可行吗?我所有解决此问题的尝试都会导致变量未定义。
我不想做这样的事情,紧密耦合我的路由参数和模板名称:
app.get('/:template', function(req, res) {
res.render(req.params.template + '.html');
});
您可以制作一个简单的中间件来为您完成这项工作。示例:
function simpleRender(file, opts) {
opts || (opts = {});
return function(req, res) {
res.render(file, opts);
};
}
然后像这样使用它:
app.get('/about', simpleRender('about.html'));
app.get('/', simpleRender('home.html'));
我是这样做的:
const handler = (req, res, template) => {
res.render(template)
}
app.get('/about', (req, res) => {
handler(req, res, 'about.html')
})
我对 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'));
或者以其他方式将模板名称传递给函数 returns res.render
这在 Express 中可行吗?我所有解决此问题的尝试都会导致变量未定义。
我不想做这样的事情,紧密耦合我的路由参数和模板名称:
app.get('/:template', function(req, res) {
res.render(req.params.template + '.html');
});
您可以制作一个简单的中间件来为您完成这项工作。示例:
function simpleRender(file, opts) {
opts || (opts = {});
return function(req, res) {
res.render(file, opts);
};
}
然后像这样使用它:
app.get('/about', simpleRender('about.html'));
app.get('/', simpleRender('home.html'));
我是这样做的:
const handler = (req, res, template) => {
res.render(template)
}
app.get('/about', (req, res) => {
handler(req, res, 'about.html')
})