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

时间:2012-09-28 19:49:03

标签: templates variables pug

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

文件: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”

5 个答案:

答案 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}