我使用模板作为基础,并希望它知道在使用它的页面中设置的一些变量......
文件:template.jade
vars = vars || {some:"variables"}
!!! 5
head
title vars.some
档案:page.jade
vars = {some:"things"} //- this does not get used from within template.jade
extends template
我希望已编译的page.jade有一个标题“thing”
答案 0 :(得分:116)
我找到了解决方案here
传递带变量的块
template.jade:
!!!
html
block vars
head
title #{pageTitle} - default www title
body
page.jade
extends template
block vars
- var pageTitle = 'Home'
答案 1 :(得分:4)
您可以使用块:
template.jade:
!!! 5
head
block title
title variables
page.jade:
extends template
block title
title things
否则你必须在脚本中定义变量(例如express)。 据我所知,变量只能通过包含传递,但不能向上传递给布局(在你的情况下是template.jade)。
答案 2 :(得分:2)
我认为块不适合我,因为我需要在多个地方使用变量。
// base.jade
pageTitleVar = "Parent's Title"
!!!
title !{pageTitleVar}
h1 !{pageTitleVar}
事实证明,您可以在父模板中实际指定两次相同的块,并且子模板传递给它的任何内容都会重复。
// base.jade
pageTitleVar = "Parent's Title"
!!!
title
block pageTitleBlock
!{pageTitleVar}
h1
block pageTitleBlock
!{pageTitleVar}
// child.jade
extends base
pageTitleVar = "Child's Title"
block pageTitleBlock
!{pageTitleVar}
阻止FTW
答案 3 :(得分:2)
一个很棒的评论解决方案,可以添加如下标题:
"我的项目 - 页面" 。
或者就是这样:
"我的项目"
模板:template.jade
doctype 5
html(lang="en")
head
//- setting the page title to be dynamic
block vars
- var defaultTitle = "My Project"
- var pageTitle = pageTitle
title #{defaultTitle}#{pageTitle}
某页:page.jade
extends base
//- custom page title
block append vars
pageTitle = " - The Page"
答案 4 :(得分:2)
如何使用template includes?
// vars.jade
- var name = "Chris"
#{ nick = "StackOverflow" }
// page.jade
doctype html
html
head
title= title
link(rel='stylesheet', href='/stylesheets/style.css')
body
h1= title
include vars
p Welcome to #{title} #{name} #{nick}