使用 Jade 模板引擎,我希望能够在扩展另一个模板的模板中选择性地将类声明为正文标记。
layout.jade
!!! 5
html(lang='en')
head
block title
meta(charset='utf-8')
link(rel='stylesheet', href='/stylesheets/style.css')
block addhead
block body
div#wrap
header
div#header_content
p
a(href='/')
img(src='/images/logo.png', alt='Template-e-o')
div.hr.red
br(style='clear:both;')
div#content
block content
br(style='clear:both;')
索引.jade
extends layout
block title
title bidi
block body
body.index
block content
p ’ello govna.
这是行不通的。
最佳答案
好的,block body
语句只是一个名为 body 的块,所以在你的布局中你没有 body
包含标签,它必须添加到 index.jade 中(您尝试这样做)。然而,在你的 index.jade 中,你只用 body.index 替换了块内容(我猜 - 因为我不在我的开发计算机上并且现在无法尝试 - 呈现正常但取出整个内容,您最终只会得到一个空的主体,尽管它应该具有 class='index' 属性)。
你可以尝试的是这个(在 index.jade 中):
block prepend body
body.index
但我不确定你的 layout.jade (div#wrap) 的其余部分是否会在 body 下正确呈现(我对此表示怀疑)。
如果真的只是在 body 上添加一个条件类,我会推荐什么,在 layout.jade 中是这样的(而不是块体):
body(class=myClassLocalVar)
在您的 .render 调用中指定 myClassLocalVar (
res.render('index', {myClassLocalVar: 'theClass'});
)。 myClassLocalVar 甚至可以是一个数组,jade 会将数组中的所有类分配给你的 body 。
关于pug - 使用 Jade,如何在扩展模板中声明主体类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9211836/