2017-12-04 9 views
1

私はエクスプレスとパグを使用していますが、すべてのリクエストでpugに渡したい値がいくつかあります。例えば、req.sessionreq.pathです。たびにこれらの値をrender()メソッドに渡すことは余りにも冗長すぎるようです。だからではなく、このような何かをすることのグローバルに設定されたダイナミックpug変数

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

追加されます複数のルート、私が管理する必要があり、それらのアイテムのより。 app.locals以外に一度設定することができるグローバルな方法はありますか?リクエストごとに一意なので、

答えて

2

カスタムミドルウェアのビットとlocalsを使用して、各リクエストですべてのテンプレートで使用できる変数を設定できます。これと同じアプローチは、Pugだけでなく、Expressが使用できるすべてのテンプレートシステムで機能します。

の前に、のルートを入れます。

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

あなたのテンプレートでは、このように呼び出すことができます。

h3= session.name 
+0

これはまさに私が探していたものです! –