2012-12-22 39 views
8

我想知道是否有內置的方式來擴展Express.js的res.render函數,因爲我想傳遞一組默認的「locals 「到呈現的每個模板。目前,我已經寫了使用underscore.js的擴展功能合併特定於該模板默認的「本地人」和那些小中間件:Node.js - Expressjs中間件擴展res.render

app.use(function(req, res, next){ 
    res.render2 = function (view, locals, fn) { 
     res.render(view, _.extend(settings.template_defaults, locals), fn); 
    }; 
    next(); 
}); 

有沒有更好的方式來做到這一點?

+0

你是什麼試圖做什麼? –

回答

7

app.locals可能是你在找什麼:

app.locals(settings.template_defaults); 

隨着res.localsres.render,快遞已經能夠合併值你的:

// locals for all views in the application 
app.locals(settings.template_defaults); 

// middleware for common locals with request-specific values 
app.use(function (req, res, next) { 
    res.locals({ 
     // e.g. session: req.session 
    }); 
    next(); 
}); 

// and locals specific to the route 
app.get('...', function (req, res) { 
    res.render('...', { 
     // ... 
    }); 
}); 
+0

它是'res.locals',雖然鏈接沒問題(不能編輯1個符號)。 – elmigranto

+0

謝謝@Jonathan Lonowski這正是我需要的! – TechplexEngineer

+0

更多信息:http://expressjs.com/api.html#app.locals – TechplexEngineer

3
res.locals or app.locals is for this exact purpose.