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オブジェクトになっているため、すべてのプロパティを1つずつ設定する必要があります。
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'
}