2017-08-24 100 views
0

我想添加一些变量呈现在每次请求视图时,仿佛在渲染函数的变量一起将其添加到被EJS使用:Express.js:在请求钩添加变量EJS

res.render('view', {data: {my: 'object'}}); 

我有这个功能,我用我的请求钩子:

app.use('/*', function(req, res, next) { 
    function after_request() { 
    console.log('called after'); 
    } 
    function before_request() { 
    console.log('called before'); 
    } 
    before_request(); 
    res.on('finish', after_request); 
    next(); 
}); 

这是工作的罚款:

called before 
GET /url/param 304 30.762 ms - - 
called after 

如果我只是设置变量给请求对象在这里我可以得到我的路线的变量并把它在渲染功能,像这样:

var variable = req.variable; 
res.render('view', {data: {my: 'object', my: variable}}); 

但我想能不能设置此在每条路线中都像这样变化。

有没有办法做到这一点?

回答

0

我有时用res.locals如果以下:

  • 我不想使用会话或页面, 页坚持相同的值,而是得到的设置每次中间件被称为

  • 变量始终命名为同一

  • 我用哈巴狗/玉意见

然后,您可以:

app.use(function(req, res, next){ 
    res.locals.variable = "some content"; 
    next(); 
}) 

,并在您的视图

extends layout 

block content 
    p= variable //'some content' 

这样,你就不必设置变量在每一个路线