2011-03-09 42 views
2

我想讓會話變量(或任何其他)在視圖中可用而不必重複一遍。變量在expressjs視圖

我想出了這一點:

res.render('index', viewVariables(req, res, params, {}); 

而且viewVariables功能:

function viewVariables(req, res, params, options) { 
    var returnObject = options || {locals:{}}; 
    var locals = { 
    currentUser: req.currentUser ? req.currentUser : false 
    }; 
    returnObject.locals = mergeObjects(locals, returnObject.locals, true); 
    return returnObject; 
}; 

那不是最新版本expressjs工作(不同的渲染方法)。

有沒有更簡單或更優雅的解決方案? (好吧,我確定有!)

回答

4

你看過dynamichelpers嗎?

從網站:

app.dynamicHelpers(obj) 

寄存器動態視圖助手。 動態視圖助手只是 接受req,res和 的函數將在呈現視圖之前針對服務器 實例進行評估。 該功能 的返回值變爲與 相關的局部變量。

app.dynamicHelpers({ 
    session: function(req, res){ 
    return req.session; 
    } 
}); 

大部分的時間我想使它成爲一個功能來代替。這樣,只有在視圖中調用函數時纔會調用它。

+1

是啊,RTFM!謝謝。 – fluxsaas 2011-03-11 08:53:35

+0

沒問題:P .. – Alfred 2011-03-11 09:50:30

0

快速V2.X

app.dynamicHelpers({ 
    session: function(req, res){ 
    return req.session; 
    } 
}); 

快車3節

app.use(function(req, res) { 
    res.locals.session = req.session; 
});