Стоит отметить, что для тех, кто, возможно, сталкивался с этим вопросом после выпуска Express 3, метод «dynamicHelpers» больше не существует.
Вместо этого вы можете использовать функцию app.locals, которая действуетв качестве объекта вы можете хранить значения или функции, а затем делать их доступными для представлений.Например: -
// In your app.js etc.
app.locals.title = "My App";
app.locals({
version: 3,
somefunction: function() {
return "function result";
}
});
// Then in your templates (shown here using a jade template)
=title
=version
=somefunction()
// Will output
My App
3
function result
Если вам нужен доступ к объекту запроса для извлечения информации, вы можете написать простую промежуточную функцию и использовать переменную app.settings.
ДляНапример, если вы используете connect-flash для предоставления сообщений своим пользователям, вы можете сделать что-то вроде этого:
app.use(function(req, res, next) {
app.set('error', req.flash('error'));
next();
});
, что даст вам доступ к сообщению об ошибке с = settings.error в вашем шаблоне.
Эти темы рассматриваются, хотя и кратко: http://expressjs.com/api.html#app.locals
Обновление: Express 4
app.locals
теперь является простым объектом JavaScript, поэтому каждое свойство должноустанавливается один за другим.
app.locals.version = 3;
app.locals.somefunction = function() {
return "function result";
}
res.locals
обеспечивает точно такую же функциональность, за исключением того, что его следует использовать для данных, специфичных для запроса, а не данных для всего приложения.Пользовательский объект или настройки являются распространенным случаем использования.
res.locals.user = req.isAuthenticated() ? req.user : null;
res.locals.userSettings = {
backgroundColor: 'fff'
}