传递额外的参数来在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'));