переменные в представлениях expressjs - PullRequest
2 голосов
/ 09 марта 2011

Я хочу сделать переменные сеанса (или любые другие) пригодными для использования в представлениях, не повторяя себя снова и снова.

Я придумал это:

  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 ]

4 голосов
/ 10 марта 2011

Вы смотрели на динамические помощники?

с сайта:

app.dynamicHelpers(obj)

Регистрирует помощники динамического просмотра. Помощники динамического просмотра просто функции, которые принимают req, res и оцениваются по отношению к серверу экземпляр перед представлением. Возвращаемое значение этой функции становится локальной переменной связанный с.

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

В большинстве случаев я предпочитаю сделать это функцией. Таким образом, он будет вызываться только при вызове функции в ваших представлениях.

0 голосов
/ 09 февраля 2013

Экспресс v2.x

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

Экспресс v.3

app.use(function(req, res) {
  res.locals.session = req.session;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...