2

我正在使用 Harp 创建一个站点,我想知道是否有一种方法可以在正常的 != yield 工作方式的同时使用 Jade 块。基本上,对于特定于页面的脚本,我想将一个块传递到我的布局中。目前,我模板中的块中的任何内容都会按原样传递到我的布局中。

例如:

// _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>

有任何想法吗?

4

1 回答 1

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.

这段代码我没有测试过,如果有什么问题请评论,我会修复它。

于 2014-05-22T21:45:53.917 回答