如何在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}