2017-12-04 2 views
1

Ich verwende Express und Mops, es gibt einige Werte, die ich bei jeder Anfrage an Mops weitergeben möchte, zum Beispiel: req.session und req.path. Diese Werte an die Methode render() jedes Mal zu übergeben erscheint einfach zu redundant.Global festgelegte dynamische Pug-Variablen

Anstatt also so etwas wie dies zu tun:

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

Je mehr Routen, die hinzugefügt werden, desto mehr dieser Elemente, die ich verwalten müssen. Gibt es eine globale Möglichkeit, dass ich sie einmal anders als app.locals festlegen kann, so dass sie pro Anfrage einzigartig sind?

Antwort

2

Sie können Variablen, die für jede Vorlage bei jeder Anfrage verfügbar sind, mit einer benutzerdefinierten Middleware und locals festlegen. Derselbe Ansatz funktioniert für alle Templating-Systeme, die Express verwenden kann, nicht nur für Pug.

Setzen Sie die folgenden vor Ihre Routen.

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

Dann in Ihrer Vorlage können Sie es so nennen.

h3= session.name 
+0

Genau das habe ich gesucht! –

Verwandte Themen