对于自 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
更新:快递 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'
}