Nodejsとexpressでハンドルバーを使用しています。これは私のmain.handlebarsファイルです:
<!doctype html>
<html>
<head>
...
</head>
<body>
<div class ="container">
...
<footer>
© {{copyrightYear}} Meadowlark Travel
</footer>
</div>
</body>
</html>
これまでのところ、私はすべてのルートに著作権年を渡します。
var date = new Date();
var copyrightYear = date.getFullYear();
app.get(
'/',
function( req, res) {
res.render(
'home',
{
copyrightYear: copyrightYear
}
);
}
);
copyrightYear
変数をグローバルに設定することは可能ですか?そのため、すべてのルート/ビューに渡す必要はありませんか?
ExpressJSは、ある種の「グローバル変数」を提供します。それらはドキュメントで言及されています: app.locals 。すべての応答にそれを含めるには、次のようなことを行うことができます。
app.locals.copyright = '2014';
この場合、代わりにハンドルバーヘルパーを作成することもできます。このような:
var Handlebars = require('handlebars');
Handlebars.registerHelper('copyrightYear', function() {
var year = new Date().getFullYear();
return new Handlebars.SafeString(year);
});
テンプレートでは、以前と同じように使用します。
© {{copyrightYear}} Meadowlark Travel
express-handlebars
の使用は、少し異なります。
var handlebars = require('express-handlebars').create({
defaultLayout:'main',
helpers: {
copyrightYear: function() {
return new Date().getFullYear();
},
}
});