如何在jade模板之间传递variables
我正在使用模板作为基础,并希望它知道在使用它的页面中设置的一些variables…
文件: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有一个标题“东西”
我在这里find解决办法
用variables传递块
template.jade:
!!! html block vars head title #{pageTitle} - default www title body
page.jade
extends template block vars - var pageTitle = 'Home'
你可以使用块:
template.jade:
!!! 5 head block title title variables
page.jade:
extends template block title title things
否则你必须在脚本中定义variables(例如express)。 据我所知,variables只能通过包含传递,但不能向上布局(在你的情况template.jade)。
我以为块不会为我工作,因为我需要在多个地方使用该variables。
// 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
一个伟大的评论解决scheme来添加这样的标题:
“我的项目 – 页面” 。
或者只是这个:
“我的项目”
模板: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"
如何使用模板包括 ?
// 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}