我正在使用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>
有什么想法吗?
答案 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>
block
功能,请使用_layout.jade
之外的其他内容,因为该文件名在Harp中具有已定义的用途。您必须使用_data.json
将自定义模板分配给网页。我还没有对此代码进行测试,如果有任何问题我会发表评论,并且我会修复它。