发现此页面在谷歌上搜索相同的问题,但在不同的上下文中,所以我认为我会将我的解决方案(阅读:解决方法)放在这里以供后代使用:
我想用从变量中提取的更多上下文来包围我的包含,例如(简化):
- var templates = page + '/templates/'
- var headid = page + 'head'
- var imgsrc = '/images/' + page
div(id=headid)
h1 #{page}
img(src=imgsrc)
div(id=page)
include templates
由于这不起作用(Jade 不支持动态包含,正如怪异所指出的那样),我与 mixin 混合:
(编辑——比我以前的解决方法更优雅一点:)
mixin page1
include page1/templates
mixin page2
include page2/templates
...
- for (var i = 0; i < 3; i++)
- var page = 'page' + i
- var headid = page + 'head'
- var imgsrc = '/images/' + page
div(id=headid)
h1 #{page}
img(src=imgsrc)
div(id=page)
+page
我之前的回答:
mixin templates(page)
- var headid = page + 'head'
- var imgsrc = '/images/' + page
div(id=headid)
h1 #{page}
img(src=imgsrc)
+templates('page1')
#page1
include page1/templates/
+templates('page2')
#page2
include page2/templates/
...
它不优雅,如果你需要以这种方式包含多个东西,它就行不通,但至少 Jade 的一部分是动态的。