如何为主句柄布局设置一个variables而不传递给每个路由?

我正在使用与nodejs和expression式的句柄。 这是我的main.handlebars文件:

<!doctype html> <html> <head> ... </head> <body> <div class ="container"> ... <footer> &copy; {{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 } ); } ); 

是否有可能在全局设置copyrightYearvariables,所以我不必把它传递给每个路线/视图?

ExpressJS提供了一些“全局variables”。 他们在文档中提到: app.locals 。 要包括在每个回应中,你可以做这样的事情:

 app.locals.copyright = '2014'; 

对于这种情况,您可以select创build一个Handlebars帮手。 喜欢这个:

 var Handlebars = require('handlebars'); Handlebars.registerHelper('copyrightYear', function() { var year = new Date().getFullYear(); return new Handlebars.SafeString(year); }); 

在模板中,像以前一样使用它:

 &copy; {{copyrightYear}} Meadowlark Travel 

使用express-handlebars只是有点不同:

 var handlebars = require('express-handlebars').create({ defaultLayout:'main', helpers: { copyrightYear: function() { return new Date().getFullYear(); }, } });