有没有办法在Harp.js中使用Jade块?

时间:2014-05-22 19:18:40

标签: javascript pug harp

我正在使用Harp创建一个站点,我想知道是否有一种方法可以使用Jade块和正常的!= yield工作方式。基本上,对于特定于页面的脚本,我想将块传递到我的布局中。目前,无论我在模板中的块中拥有什么,都会被传递到我的布局中。

例如:

// _layout.jade
html
  head
    title Hello, world
  body
    != yield
    div Random delimiter
    block scripts

// index.jade
h1 Hello, world
block scripts
  script(src='/some/script.js').
  div Not working

输出:

<html>
  <head>
    <title>Hello, world</title>
  </head>
  <body>
    <h1>Hello, world</h1>
    <div>Not working</div>
    <div>Random delimiter</div>
  </body>
</html>

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

是的,你可以这样做:

// _custom_layout.jade
html
  head
    title Hello World
  body
    block main_content
      //- Default main content
    div Delimiter
    block scripts
      //- Default scripts here

// index.jade
extends _custom_layout.jade
block main_content
  h1 Hello From Index
block scripts
  script(src='/some/script.js').

那应该输出

<html>
  <head>
    <title>Hello World</title>
  </head>
  <body>
    <h1>Hello From Index</h1>
    <div>Delimiter</div>
    <script src="/some/script.js"></script>
  </body>
</html>
  • 要利用jade的block功能,请使用_layout.jade之外的其他内容,因为该文件名在Harp中具有已定义的用途。您必须使用_data.json将自定义模板分配给网页。

我还没有对此代码进行测试,如果有任何问题我会发表评论,并且我会修复它。