我正在使用express和pug,我想在每次请求时传递一些值,例如:req.session
和req.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
以外的其他方式,以便它们在每个请求中都是唯一的?
答案 0 :(得分:4)
您可以使用一些自定义中间件和locals
设置每个请求上每个模板可用的变量。这种方法适用于Express可以使用的所有模板系统,而不仅仅是Pug。
在路线之前输入以下。
app.use((req, res, next) => {
res.locals.session = req.session
next()
})
然后在你的模板中你可以这样称呼它。
h3= session.name