在每个请求中传递一个variables来查看Node.js Express

我有一些在我的路线中重复的代码,并且我总是从重复的代码中传递一些结果variables。

例:

/* GET /events/list */ router.get('/events/list', function(req, res) { var blah = someFunctionThatAnalyzesUserCookie(); res.render('places/list', { title: 'Places', blah: blah }); }); /* GET /events/details */ router.get('/events/details', function(req, res) { var blah = someFunctionThatAnalyzesUserCookie(); res.render('places/details', { title: 'Some place', blah: blah }); }); 

我怎样才能重构这个?
我需要把所有的观点都传给我,我希望他们的逻辑清晰,就像这样:

 /* GET /events/list */ router.get('/events/list', function(req, res) { res.render('places/list', { title: 'Places' }); }); /* GET /events/details */ router.get('/events/details', function(req, res) { res.render('places/details', { title: 'Some place' }); }); 

我search了一段时间,但只发现如何执行每个请求中的东西,像这样:

 app.use(function(req, res, next) { doSomethingInEveryRequest(); next(); }); 

但我无法弄清楚如何在每个请求中将variables传递给视图。

另外我读了关于app.locals,但我想这更适合于常量。 我传递的variables取决于用户的Cookie,所以是一个…variables。

你可以尝试像波纹pipe: –

 var renderPage = function(path,fileName,title){ router.get(path,function(req,res){ var blah = someFunctionThatAnalyzesUserCookie(); res.render(fileName,{title:title, blah:blah}); }); } renderPage('/events/list','events/list','Places'); renderPage('/events/details','events/details','Some Place'); 

我想你可以使用Express的中间件叫做“Cookie-Parser”。

这是一个链接到它的文档: https : //github.com/expressjs/cookie-parser/blob/master/README.md