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 に「things」というタイトルを付けたい

4

5 に答える 5

117

ここで解決策を見つけます

変数を指定してブロックを渡す

template.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

ブロックを使用できます:

template.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

次のようなタイトルを追加するための優れたコメント付きソリューション:
"My Project - The Page" .

またはこれだけ:
"My Project"

template: 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 に答える