【问题标题】:Jade templating, variable scope in includesJade 模板,包含变量范围
【发布时间】:2013-02-23 00:42:19
【问题描述】:

我正在使用 Jade(没有 Express,仅用于静态 HTML 模板) - 我理解它能够创建部分,这意味着范围不是问题,但情况似乎并非如此,我找不到参考到这个用例。

ma​​ster.jade

!!! 5
html
  block vars
  - var slug= 'home'
  head
    block pagetitle
      title Static HTML
    link(rel='stylesheet', href='css/styles.css')
  body(class= slug)
    .wrapper
      include includes/header

包含/header.jade

.header 
  ul
    li(class= slug)

我尝试过包括#{slug} 在内的语法变体,但总是在includes/header.jade 文件中收到错误“未定义slug” - 可以这样做吗?

编辑: 因此,Dave Weldon 在下面的 cmets 中给出的答案是,当包含在 master.jade 中时该变量可用,但我的构建命令编译了 alljade文件包括它们自己的包含,此时当然没有定义变量。

【问题讨论】:

    标签: node.js pug


    【解决方案1】:

    您可以使用mixin 来完成此操作,如下所示:

    大师.玉

    include includes/header
    
    !!!
    html
      block vars
      - var slug= 'home'
      head
        block pagetitle
          title Static HTML
        link(rel='stylesheet', href='css/styles.css')
      body(class= slug)
        .wrapper
          mixin header(slug)
    

    包含/header.jade

    mixin header(klass)
      .header
        ul
          li(class= klass)
    

    编译时:

    <!DOCTYPE html>
    <html>
      <head>
        <title>Static HTML</title>
        <link rel="stylesheet" href="css/styles.css">
      </head>
      <body class="home">
        <div class="wrapper">
          <div class="header">
            <ul>
              <li class="home"></li>
            </ul>
          </div>
        </div>
      </body>
    </html>
    

    【讨论】:

    • 所以你是说包含在那个变量上没有作用域?鉴于我的实际 include/header.jade 文件的内容,我想避免使用 mixin - 我的示例非常简化!但如果你说我不能像这样继承变量,我想我别无选择
    • 实际上它工作得很好 :) 谢谢 - 肯定更多地使用 mixins - 没有我想象的那么糟糕 - 再次感谢
    • 是的,我意识到我实际上并没有回答你的问题。所以如果你只运行jade master.jade,你的原始代码就可以正常工作——如果你编译includes/header.jade,你会得到一个错误。就个人而言,我是 mixins 的忠实粉丝,并尽可能多地使用它们。我认为即使在这种情况下它也是更好的解决方案,因为您可以指定 mixin 可以采用的参数,如果您要求它编译包含,jade 不会抱怨。
    • 啊,这就是答案!我的命令jade -P jade --out html 当然会编译翡翠文件夹中的所有文件,包括includes文件夹......我仍然更喜欢mixin
    • 你可以使用 '+' 代替 'mixin' :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    • 2016-11-25
    相关资源
    最近更新 更多