全局设置动态帕格变量

Get*_*awn 2 javascript node.js express pug

我使用的是express和pug,我希望在每个请求中传递一些值给pug,例如:req.sessionreq.pathrender()每次将这些值传递给方法似乎太多余了。

因此,不要像这样做:

app.get('/', (req, res) => {
    res.render('home', {session: req.session})
})
app.get('/profile', (req, res) => {
    res.render('profile', {session: req.session})
})
Run Code Online (Sandbox Code Playgroud)

添加的路线越多,我需要管理的项目越多。有没有一种全局的方式可以对它们进行一次设置,app.locals从而使每个请求具有唯一性?

Sov*_*iut 5

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

您的路线放置以下物品。

app.use((req, res, next) => {
  res.locals.session = req.session
  next()
})
Run Code Online (Sandbox Code Playgroud)

然后,您可以在模板中这样称呼它。

h3= session.name
Run Code Online (Sandbox Code Playgroud)