0

以下に示す特別なコンセプトを実現する HTML テンプレート エンジン (スクリプト言語のいずれか) を教えてください。

すべてのマーカーがアクティブです。テンプレートを呼び出す前にデータを準備する必要はありませんが、テンプレート自体はモデルからデータを取得しました。例えば

{CurrentUser.name} は現在ログインしているユーザーの名前に置き換えられるため、テンプレートを呼び出す前にデータを準備する必要はありません。

しかし、いくつかの「カスタム」データ メソッドを指定することもできます。たとえば、フォト ギャラリーを作成する必要があり、写真のチャンクのみを表示する必要がある場合、{PhotosListPart.thumb.url} を使用して、PhotosListPart を取得するための特別なメソッドを定義し、テンプレートで自動的に呼び出してデータを非同期に取得できるようにします。

このテンプレート作成方法をサポートするテンプレート エンジン/フレームワークを知っていますか?

4

2 に答える 2

0

プルビューは、コントローラーからデータをプルするビューです(コントローラーは、モデルを呼び出してデータを検索します)。

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などを使用して、既にレンダリングされたデータをテンプレートに出力できます。したがって、レンダリング/表示アクションをコントローラーと混合しません。それらはすべてレンダラーで行われます。

于 2012-05-18T09:29:07.373 に答える
0

はい、MVC のみの設計パターンは理解していますが、URL ルーティングを実装してテンプレートを呼び出す方法を想像することはできません。たとえば、ユーザーからリクエストを受け取り、ビューを削除する場合はいくつかのデータを表示する必要があります。すべてのビジネス ロジックは、モデルまたはテンプレートまたはヘルパーなどの場所に配置する必要があるため、MVC が判明しますが、ビューは 3 か所以上に塗りつぶされます。しかし、本当にこれをやりたい場合は、Mako テンプレートhttp://www.makotemplates.org/を使用してみてください。必要に応じて、Python コードをテンプレートに直接記述できます ))

于 2012-05-18T08:35:16.733 に答える