我正在使用Jade(不用Express,只用于静态HTML模板)- 我理解它可以创建部分视图,这意味着作用域不是问题,但事实并非如此,我找不到任何参考资料。
master.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
includes/header.jade
.header
ul
li(class= slug)
我尝试过包括#{slug}
在内的不同语法变体,但总是在includes/header.jade
文件中出现“slug未定义”的错误 - 是否有可能实现这一点?
编辑:根据下面评论中Dave Weldon给出的答案,当包含在master.jade中时,该变量是可用的,但我的构建命令编译了所有jade文件,包括它们自己的includes,此时变量当然未定义。
jade master.jade
,那么你的原始代码就可以正常工作 - 如果你编译includes/header.jade
,你会得到一个错误。个人而言,我非常喜欢使用mixin,并尽可能多地使用它们。我认为即使在这种情况下,它也是更优秀的解决方案,因为你可以指定mixin可以接受什么参数,而且jade不会抱怨如果你要求它编译包含文件。 - David Weldonjade -P jade --out html
当然会编译包括 includes 文件夹在内的 jade 文件夹中的所有文件……不过我还是更喜欢 mixin。 - A Macdonald