我希望在视图中使用会话变量(或任何其他变量),而不必重复自己。
我想出了这个:
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版本(不同的渲染方法)。
是否有更简单或更优雅的解决方案? (我确信有!)
答案 0 :(得分:4)
你看过dynamichelpers吗?
来自网站:
app.dynamicHelpers(obj)
注册动态视图助手。 动态视图助手很简单 接受req,res和的函数 针对服务器进行评估 在呈现视图之前的实例。 此函数的返回值 成为它的局部变量 与。相关联。
app.dynamicHelpers({
session: function(req, res){
return req.session;
}
});
大多数时候我喜欢把它变成一个功能。这样,只有在视图中调用函数时才会调用它。
答案 1 :(得分:0)
Express v2.x
app.dynamicHelpers({
session: function(req, res){
return req.session;
}
});
Express v.3
app.use(function(req, res) {
res.locals.session = req.session;
});