このページが同じ質問をグーグルで検索しているのを見つけましたが、コンテキストが異なるため、後世のためにここに解決策(回避策を読んでください)を置くと思いました:
インクルードを変数から取得したより多くのコンテキストで囲みたかったのです。例:(簡略化):
- 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
それは機能しないので(ジェイドはダイナミックインクルードをサポートしていません、気まぐれで指摘されているように)、私はミックスインとハイブリッド化しました:
(編集–以前の回避策よりも少しエレガントです:)
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/
...
エレガントではなく、この方法でいくつかのものを含める必要がある場合は機能しませんが、ジェイドの少なくとも一部は動的です。