传递额外的参数来在Express中路由处理程序

Express对我来说是比较新的,我正在寻找一种使路线更加可重用的方法。 在我的应用程序中,我将有相当多的path可以传递给通用处理程序,但将有不同的模板。

例:

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中这是可能的吗? 我所有的尝试解决这个结果variables是未定义的。

我宁愿不要做这样的事情,紧密耦合我的路线参数和模板名称:

 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'));