PUG模板继承中父局部变量更新与Express传值有效性咨询
PUG模板与Express传值相关问题解答
问题1:在PUG模板中,能否更新父模板的局部变量(locals)并通过extends继承机制在子模板中使用?
可以实现,核心逻辑是PUG的模板继承会共享同一个locals上下文:
- 父模板的局部变量会自动传递给子模板,子模板可直接使用
- 子模板中通过
- var xxx = ...定义的变量,会进入全局上下文,父模板同样能访问 - 若子模板定义了和父模板同名的变量,会覆盖父模板的原有变量值
问题2:使用res.render('page-a',{title:'Some Title'})是否会同步更新layout.pug中#{title}的插值内容?
会同步更新。Express通过res.render传入的局部变量会被整个模板继承链共享,layout.pug作为被page-a.pug继承的父模板,完全可以读取到title变量。最终渲染后的页面头部标题会变成My Site - Some Title,同时page-a.pug中的h1= title也会渲染为Some Title。
相关模板代码
//- layout.pug html head title My Site - #{title} block scripts script(src='/jquery.js') body block content block foot #footer p some footer content //- page-a.pug extends layout.pug block scripts script(src='/jquery.js') script(src='/pets.js') block content h1= title - var pets = ['cat', 'dog'] each petName in pets include pet.pug
Express传值代码
res.render('page-a',{title:'Some Title'}) //Will this update head title in layout.pug as well?
内容的提问来源于stack exchange,提问作者Buddy Li
相关产品推荐
相关产品推荐

