使用Express Router时,Nunjucks模板变量无法在HTML渲染中显示
解决Express Router模块中res.render传对象到Nunjucks模板不显示的问题
最近踩了个Express+Nunjucks的小坑,跟大家分享下:我在导出给Express Router的模块里用res.render传递对象到index.njk模板,页面能正常渲染出来,但对象里的属性就是显示不出来。
一开始我是这么操作的:
- 路由模块里的
res.render传参:res.render('index', { data: { title: '我的标题', sub: '我的副标题' } }) - 然后在
index.njk里用{{data.title}}和{{data.sub}}去取值,结果页面上这俩位置全是空的。
折腾了好一会儿才发现核心问题:res.render传递的对象,其顶层属性会直接成为模板的全局变量,不需要额外嵌套一层data来访问。
我最终用的解决方法是修改模板写法:把{{data.title}}换成{{title}},{{data.sub}}换成{{sub}},刷新页面后,对象变量就正常显示出来了!当然你也可以调整res.render的传参,直接传{ title: '我的标题', sub: '我的副标题' },效果是一样的。
特别感谢antonmyrberg和petarr的帮忙,才快速定位到问题~
内容的提问来源于stack exchange,提问作者c87
相关产品推荐
相关产品推荐

