使用pug扩展时传递变量

时间:2018-09-05 11:20:19

标签: node.js express pug

我有一个名为SELECT STR_TO_DATE("09-02-2018", '%d-%m-%Y') 的设置页面,它的posting.pug是哈巴狗extends模板。 我的应用程序中的几个设置页面在哪里?我想将变量settingsLayout传递到posting=1页,以向用户显示发布页面是当前页面。

如何将变量传递给扩展的模板?

我试图在settingsLayout之前设置一个变量。那是不允许的。

我尝试将其作为属性传递-不起作用。

2 个答案:

答案 0 :(得分:2)

您可以尝试这样

settingsLayout.pug

block variables    

doctype html
html
  head
  body
    // Try to call variable here
    h1 posting

posting.pug

extends settingsLayout

block variables
  - var posting = 1

我希望这项工作!

答案 1 :(得分:0)

唯一不起作用的是覆盖包含文件中的pug变量。
很好用 php compiler pug-php/pug@^3.4
但不适用于
webpack pug-loader@^2.4.0 pug@^2.0.4 webpack@^4.43.0 webpack-dev-server@^3.11.0

我有一个更复杂的版本。
我想覆盖很多变量,例如,我有pageTitle,siteTitle,siteDivider变量。

我的主页是views/index.pug
我的布局是views/layouts/default.pug
我将默认变量存储在几个文件中:views/vars/page.pugviews/vars/site.pug

让我们从变量开始:

文件views/vars/page.pug

- var pageTitle = "##Default##"

文件views/vars/site.pug

- var siteTitle = "Yaro"
- var siteDivider = "|"

文件views/index.pug

extend layouts/default

block vars
  include vars/site
  include vars/page
  - var pageTitle = "Business Solutions & IT development"

文件views/layouts/default.pug

block vars
  include ../vars/site
  include ../vars/page

doctype html
html
  head
    meta(charset="utf-8")
    meta(name="viewport", content="width=device-width, initial-scale=1, shrink-to-fit=no")
    title #{pageTitle} #{siteDivider} #{siteTitle}
  body
    block body

因此,我等待标题为“业务解决方案和IT开发| Yaro

但是我只收到:业务解决方案和IT开发 没有siteDivider和siteTitle:(

但是如果我有一个像这样的文件views/index.pug

extend layouts/default

block vars
  include vars/site
  include vars/page
  - var pageTitle = "Business Solutions & IT development"
  - var siteDivider = "|"
  - var siteTitle = "Yaro"

它很好用。

我的意思是使用默认变量来覆盖只需要的变量,而不是全部。