2017-08-24 94 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' 

這樣,你就不必設置變量在每一個路線