プルビューは、コントローラーからデータをプルするビューです(コントローラーは、モデルを呼び出してデータを検索します)。
MVCパターン[1]を厳密に尊重する場合は、どのような種類のプルビューも使用しません。
しかし、AFAIKは、テンプレート内のロジック(if / foreach / function呼び出しなど)を許可するため、MVCを尊重するテンプレートエンジンはありません[2]。
テンプレートエンジンには、データの存在を前提とする事前に記述されたコードはありませんが、ほとんどすべてのテンプレートを使用すると、ページに必要なすべてのもので満たされた1つの巨大なデータ配列を渡すことができます。
データを変数に事前入力するテンプレートエンジンが必要な場合、それはテンプレートエンジンではなく、アプリケーション全体であり、データベースまたはモデルと通信するロジックが含まれているため、テンプレートエンジンの概念からはほど遠いものになります。
[1]テンプレートエンジンについて話すときにMVCを尊重するということは、変数が設定されているかどうかを確認するためだけに使用することを意味します。for/ foreachループは存在しないはずです。アイテムのセット/リスト全体に及ぶのは、コレクションオブジェクトにテンプレートを適用することによって行われます。 、それと他の懸念はここに示されています:http: //bit.ly/Jc3f0Z
[2]例外:Java、C#、PythonのStringTemplate ; JS / Node.js / Java / PHP / Python/Rubyを含む多くの言語での口ひげ。
編集
ビュークラスを使用してデータを準備し、テンプレートファイルを使用してデータを出力すると、名前がわかりにくくなるため、常に応急修理のように継ぎ合わされます(ビューはクラス+テンプレート、テンプレートはファイルです)。
そのため、前処理クラスに「Renderers」、テンプレートファイルに「Templates」という名前を付けて、Renderers + Templates=Viewsにします。これは、名前としても哲学としても私にとってより理にかなっています。
レンダラー内でmoney_format/number_format / html_escapeなどを使用して、既にレンダリングされたデータをテンプレートに出力できます。したがって、レンダリング/表示アクションをコントローラーと混合しません。それらはすべてレンダラーで行われます。