我想让 session 变量(或任何其他变量)在 View 中可用,而无需再次重复。
我想出了这个:
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版本中不起作用(不同的渲染方法)。
是否有更简单或更优雅的解决方案? (我确信有!)
最佳答案
你看过动态助手吗?
来自网站:
app.dynamicHelpers(obj)
Registers dynamic view helpers. Dynamic view helpers are simply functions which accept req, res, and are evaluated against the Server instance before a view is rendered. The return value of this function becomes the local variable it is associated with.
app.dynamicHelpers({
session: function(req, res){
return req.session;
}
});
大多数时候我喜欢把它变成一个函数。这样,只有当您在 View 中调用该函数时才会调用它。
关于node.js - ExpressJS View 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5245117/