对于自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 outputMy App3function 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'}


