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

Dan*_*Dan 13 node.js express pug

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

layout.jade:

!!! 5
  head
    - var title = title || "Default Title Here"
    title #{title}
    // ...
Run Code Online (Sandbox Code Playgroud)

child.jade:

- var title = "Child Title Here"
extends layout
// ...
Run Code Online (Sandbox Code Playgroud)

关于如何实现这一点的任何想法都将是一个很大的帮助.

谢谢!

sch*_*nya 16

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

layout.jade

block variables
!!! 5
head
 - var title = title || "Default Title Here"
 title #{title}
Run Code Online (Sandbox Code Playgroud)

child.jade:

block variables
  title = "ST"
extends layout
Run Code Online (Sandbox Code Playgroud)

  • 在标题前面缺少" - "="在child.jade上的ST? (2认同)

Zac*_*k S 6

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

layout.jade中

block head
  - var theTitle = titleVar ? titleVar : "This title was set from The Layout!"
title #{theTitle}
Run Code Online (Sandbox Code Playgroud)

child.jade中:

extends layout
block head
   - var titleVar = "This title was set from the child!"
Run Code Online (Sandbox Code Playgroud)

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