全局设置动态哈巴狗变量

时间:2017-12-04 05:00:01

标签: javascript node.js express pug

我正在使用express和pug,我想在每次请求时传递一些值,例如:req.sessionreq.path。每次将这些值传递给render()方法似乎太多余了。

所以不要做这样的事情:

app.get('/', (req, res) => {
    res.render('home', {session: req.session})
})
app.get('/profile', (req, res) => {
    res.render('profile', {session: req.session})
})

添加的路线越多,我需要管理的项目就越多。是否有一种全局方式可以将其设置为app.locals以外的其他方式,以便它们在每个请求中都是唯一的?

1 个答案:

答案 0 :(得分:4)

您可以使用一些自定义中间件和locals设置每个请求上每个模板可用的变量。这种方法适用于Express可以使用的所有模板系统,而​​不仅仅是Pug。

在路线之前输入以下

app.use((req, res, next) => {
  res.locals.session = req.session
  next()
})

然后在你的模板中你可以这样称呼它。

h3= session.name