54

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

文件: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 有一个标题“事物”

4

5 回答 5

117

我在这里找到解决方案

带变量的传递块

模板.jade:

!!!
html
  block vars
  head
      title #{pageTitle} - default www title
  body

page.jade

extends template
block vars
  - var pageTitle = 'Home'
于 2013-06-14T08:11:00.313 回答
4

您可以使用块:

模板.jade:

!!! 5
head
    block title
        title variables

page.jade:

extends template
block title
    title things

否则,您必须在脚本中定义变量(例如 express)。据我所知,变量只能通过包含传递,但不能向上传递到布局(在您的情况下为 template.jade)。

于 2012-12-14T11:08:40.337 回答
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

于 2013-04-18T18:32:53.483 回答
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"
于 2016-01-29T16:26:54.010 回答
2

如何使用模板包含

// 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}
于 2016-02-16T04:05:07.650 回答