私は Jinja2 と Nunjucks (プロジェクトによって異なります) の両方を使用していますが、任意の HTMLを含む複数のブロックで再利用可能な要素を作成する方法をまだ理解していません。例(疑似コード):
{% macro item(class) %}
<article class="{{ class }}">
<h3>{{ caller(1) }}</h3>
<p>{{ caller(2) }}</p>
</article>
{% endmacro %}
{% call item %}
Hello <abbr title="...">world</abbr>!
{% ---- %}
lorem <em>ipsum</em> dolor <strong>sit</strong> amet
{% endcall %}
それぞれのブロックの HTML を通常の引数 (文字列) としてマクロに渡すのは非現実的です。
あまり工夫されていない例として、Bootstrap スタイルのフォームがあります。
<div class="form-group">
<label for="{{ id }}" class="control-label">$label</label>
<input type="{{ type }}" id="{{ id }}">
<p class="help-block">$hint</p>
</div>
ここでは、 と の両方$label
が$hint
HTML の任意のブロックである可能性があります。おそらく、マクロの外部で定義された複数のフィールドが存在する可能性もあります。
ここで推奨されるアプローチは何ですか?