おそらくいくつかの翡翠のテクニックを混同していて、「ブロック」の定義に混乱しているので、試してみて、いくつかの重要事項を説明します。
ユースケースを対象とした2つの例を(わずかな変更を加えて)示します。
含む
インクルード手法を使用すると、マスター(レイアウト)テンプレートのコンテンツを他のテンプレートファイルのコンテンツに置き換えることができます。他のヒスイのテンプレートファイルを含める場合、追加のコンテンツをインクルードされたファイルに渡して、どこかに追加または生成することができます。
main.jade:
div
include heading
div.span3
a IamSomewhatRight
heading.jade:
div.span4
a IamLeft
div.span3
a IamRight
結果:
div
div.span4
a IamLeft
div.span3
a IamRight
div.span3
a IamSomewhatRight
ご覧のとおり、追加およびオプションのコンテンツ、つまり以下のブロックinclude heading
は、デフォルトでインクルードファイルのコンテンツに追加されます。キーワードyield
を使用して、置換の正確な場所を定義します。これは、以下で説明するキーワードによって定義されるブロック定義とは関係がないことに注意してください。block
ブロック
マスターテンプレート内でブロックを定義する場合、具体的な使用のためにこのテンプレートを拡張し、これらのブロックを置き換える方法を説明できます。これは、継承されたテンプレート内で行われます。
main.jade:
div
block headingleft
block headingright
heading.jade:
extends main
block headingleft
div.span4
a IamLeft
block headingright
div.span3
a IamRight
div.span3
a IamSomewhatRight
結果は、「含む」の例の結果とまったく同じです。もちろん、ここであなたheading.jade
をいくつかに変換しmyview.jade
、ページ生成全体をカバーすることは理にかなっているかもしれません。
現在、インクルードまたはブロック、あるいはその両方をさまざまな方法で組み合わせてビューを構成するためのさまざまな状況と要件があります(これは一種の哲学です!)。継承を使用することは、私の意見では、いくつかの「メインファイル」の繰り返しを排除するための優れた方法です。または、プレースホルダー変数(またはその他)を定義するコントローラーベースのビュー合成手法の一種であり、多くの場合、「関心の分離」アプローチ。