我对Express来说比较新,而且我正在寻找一种让路由更具可重用性的方法.在我的应用程序中,我将有很多路径可以传递给通用处理程序,但会有不同的模板.
例:
app.get('/about', function(req, res) {
res.render('about.html');
});
app.get('/', function(req, res) {
res.render('home.html');
});
Run Code Online (Sandbox Code Playgroud)
虽然这个例子很懊悔,但我有30多条这样的路线.我希望能做的是这样的:
app.get('/about', generic.render('about.html'));
Run Code Online (Sandbox Code Playgroud)
或以其他方式以某种方式将模板名称传递给返回的函数res.render是否可以在Express中使用?我尝试解决此问题的所有尝试都导致变量未定义.
我宁愿不做这样的事情,紧密耦合我的路线参数和模板名称:
app.get('/:template', function(req, res) {
res.render(req.params.template + '.html');
});
Run Code Online (Sandbox Code Playgroud)
你可以制作一个简单的中间件来为你做这件事.例:
function simpleRender(file, opts) {
opts || (opts = {});
return function(req, res) {
res.render(file, opts);
};
}
Run Code Online (Sandbox Code Playgroud)
然后就像使用它:
app.get('/about', simpleRender('about.html'));
app.get('/', simpleRender('home.html'));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2960 次 |
| 最近记录: |