2

セッション変数 (またはその他の変数) をビューで使用できるようにしたいと考えています。

私はこれを思いついた:

  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

2 に答える 2

4

dynamichelpers を見たことがありますか?

ウェブサイトから:

app.dynamicHelpers(obj)

動的ビュー ヘルパーを登録します。動的ビュー ヘルパーは、req、res を受け入れる単純な関数であり、ビューがレンダリングされる前に Server インスタンスに対して評価されます。この関数の戻り値は、関連付けられているローカル変数になります。

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

ほとんどの場合、代わりに関数にするのが好きです。このようにして、ビューで関数を呼び出したときにのみ呼び出されます。

于 2011-03-09T22:02:41.373 に答える
0

エクスプレス v2.x

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

エクスプレス v.3

app.use(function(req, res) {
  res.locals.session = req.session;
});
于 2013-02-09T06:40:21.087 に答える