簡體   English   中英

Express.js:在請求掛鈎中為EJS添加變量

[英]Express.js: Adding variables for EJS in request hook

我想在每個請求上呈現視圖時添加一些EJS使用的變量,就像將它們與render函數中的變量一起添加一樣:

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

如果僅在此處將變量設置為請求對象,則可以在路由中獲取該變量並將其發送到render函數中,如下所示:

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

但是,我希望不必在每條路線中都這樣設置此變量。

有沒有辦法做到這一點?

您可以使用會話,它們使您可以在用戶會話的所有請求上共享值。

更多信息: https : //github.com/expressjs/session

如果以下情況,我有時會使用res.locals

  • 我不想使用會話或在頁面之間保留相同的值,但是每次調用中間件時都會設置它

  • 變量總是命名為相同

  • 我使用哈巴狗/翡翠景色

那么你也能:

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

在你看來

extends layout

block content
  p= variable //'some content'

這樣,您不必在每條路線中都設置變量

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM