Ответ 1
ExpressJS предоставляет какие-то "глобальные переменные". Они упоминаются в документах: app.locals. Чтобы включить его в каждый ответ, вы можете сделать что-то вроде этого:
app.locals.copyright = '2014';
Я использую handlebars с nodejs и выражаю. Это мой файл 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';
В этом случае вы также можете создать помощник Handlebars. Вот так:
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();
},
}
});