从Jade中的子模板设置页面标题

时间:2013-03-29 18:15:59

标签: node.js express pug

我想通过jade在布局的子模板中设置我的页面标题。我不想在路由中设置它们,因为这需要重新启动服务器。这是我希望实现的目标:

layout.jade:

!!! 5
  head
    - var title = title || "Default Title Here"
    title #{title}
    // ...

child.jade:

- var title = "Child Title Here"
extends layout
// ...

关于如何实现这一目标的任何想法都会有很大的帮助。

谢谢!

2 个答案:

答案 0 :(得分:16)

来自https://github.com/visionmedia/jade/issues/654#issuecomment-5859502

layout.jade

block variables
!!! 5
head
 - var title = title || "Default Title Here"
 title #{title}

child.jade:

block variables
  title = "ST"
extends layout

答案 1 :(得分:6)

我最终得到了一个非常简单的逻辑,因为上面的答案对我不起作用:

layout.jade

中的

block head
  - var theTitle = titleVar ? titleVar : "This title was set from The Layout!"
title #{theTitle}
child.jade:

中的

extends layout
block head
   - var titleVar = "This title was set from the child!"

在此解决方案中,布局将检查是否存在名为titleVar的变量:如果它确实存在(并且它不等于零),则布局使用titleVar的值来设置为标题否则,将从布局文件中发生预定义的标题(在我们的例子中:" 此标题是从布局设置的!")。亲自尝试并从子模板中评论// titleVar的定义并查看结果。我希望这个解决方案可以帮助别人:)