Templates 如何在jade模板之间传递变量

Templates 如何在jade模板之间传递变量,templates,variables,pug,Templates,Variables,Pug,我使用一个模板作为基础,并希望它知道在使用它的页面中设置的一些变量 文件:template.jade vars = vars || {some:"variables"} !!! 5 head title vars.some doctype 5 html(lang="en") head //- setting the page title to be dynamic block vars - var defaultTitle = "My Project"

我使用一个模板作为基础,并希望它知道在使用它的页面中设置的一些变量

文件:template.jade

vars = vars || {some:"variables"}
!!! 5
head
    title vars.some
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

vars = {some:"things"} //- this does not get used from within template.jade
extends template
extends base
//- custom page title
block append vars
    pageTitle = " - The Page"
我希望编译后的page.jade有一个标题“things”

您可以使用块:

template.jade:

!!! 5
head
    block title
        title variables
!!!
html
  block vars
  head
      title #{pageTitle} - default www title
  body
page.jade:

extends template
block title
    title things
否则,您必须在脚本中定义变量(例如express)。
据我所知,变量只能通过include传递,而不能向上传递到布局(在您的例子中是template.jade)。

我认为块对我不起作用,因为我需要在多个位置使用变量

// 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

我找到了解决方案

带变量的pass块

template.jade:

!!! 5
head
    block title
        title variables
!!!
html
  block vars
  head
      title #{pageTitle} - default www title
  body
杰德

vars = {some:"things"} //- this does not get used from within template.jade
extends template
extends template
block vars
  - var pageTitle = 'Home'
extends base
//- custom page title
block append vars
    pageTitle = " - The Page"

这是一个很好的添加标题的方法:
“我的项目-页面”

或者就是这样:
“我的项目”

模板:template.jade

vars = vars || {some:"variables"}
!!! 5
head
    title vars.some
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

vars = {some:"things"} //- this does not get used from within template.jade
extends template
extends base
//- custom page title
block append vars
    pageTitle = " - The Page"
使用如何


这个限制真的很糟糕。这些变量需要转到扩展模板。当您包含扩展布局的模板时,这似乎不起作用。完美地解决了我的问题。非常干净的解决方案。谢谢