【问题标题】:How do I set up cross-block variables in PUG 3 templates?如何在 PUG 3 模板中设置跨块变量?
【发布时间】:2021-08-03 12:48:12
【问题描述】:

我有一只这样的哈巴狗:

extends layout.pug

block a

  - var x = 'test'

  //- stuff

block b

  //- ..... stuff

效果很好。

但是当我尝试为block ablock b 移动 - var x 时,我失败了。

我试过了:

extends layout.pug

- var x = 'test'

block a


  //- stuff

block b

  //- ..... stuff

上面写着:

只有命名的块和混合可以出现在扩展模板的顶层

还有这个:

- var x = 'test'

extends layout.pug

block a


  //- stuff

block b

  //- ..... stuff

上面写着:

模板继承的声明(“扩展”)应该是文件中的第一件事。每个文件只能有一个 extends 语句。

【问题讨论】:

    标签: pug


    【解决方案1】:

    Template Inheritance > Common mistakes section of the Pug docs 中提到了该问题,以及两个可能的解决方案:

    请注意,只有命名块和混合定义可以出现在子模板的顶层(未缩进)。这个很重要!父模板定义页面的整体结构,子模板只能appendprepend,或者替换特定的标记和逻辑块。如果子模板试图在块之外添加内容,Pug 将无法知道将其放在最终页面的哪个位置。

    这包括unbuffered code,它也可以包含标记。如果您需要定义在子模板中使用的变量,您可以通过几种不同的方式进行:

    • 将变量添加到 Pug options 对象,或在父模板中的无缓冲代码中定义它们。子模板将继承这些变量。
    • 在子模板中在一个块中定义变量。扩展模板必须至少有一个块,否则它将为空 - 只需在此处定义变量即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-02
      • 2013-04-16
      • 2015-07-06
      • 2012-10-11
      • 2018-12-24
      • 2013-05-15
      相关资源
      最近更新 更多