expressjs视图中的变量

时间:2011-03-09 11:27:07

标签: node.js express

我希望在视图中使用会话变量(或任何其他变量),而不必重复自己。

我想出了这个:

  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版本(不同的渲染方法)。

是否有更简单或更优雅的解决方案? (我确信有!)

2 个答案:

答案 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;
});