3

私が考えることができる最も明白な例は、ネストされたコメントを出力するためのものです。コメントのツリーがあり、テンプレートを使用してネストされたhtml(たとえば、リスト内のリストまたはdiv内のdiv)として出力したいとします。

「コメント」ブロック/関数/タグ/ヘルパー/コメントの子のために何らかの方法で自分自身を呼び出すことができなければならないものは何でも。

1つのテンプレートファイル内でそのようなことをサポートするテンプレートエンジンはありますか?

各コメントの「インデント」または「深さレベル」を事前に計算して、正しい順序で1つのフラットリストとしてテンプレートに送信できることは承知していますが、それは望ましくないとしましょう。そして、コード内/テンプレートの外側でスニペットをつなぎ合わせたくないとしましょう-ページ全体を1つのテンプレートまたはテーマファイルに含めたいと思います。


更新:ネストされたhtmlを生成したい。コメントをネストして表示するのではなくネストしてほしい。CSSで物事をインデントする方法を知っています。:)それがブラウザで行われるのかサーバーで行われるのかは関係ありません。なぜなら、テンプレートを1つのファイルに自己完結させたいからです。

のように:

var html = render(template, {comments: aTreeOfNestedComments});

(これは、node.js、ブラウザプラグイン、最近javascriptを呼び出すのが好きな「jQuery」の可能性があります...)jadeはミックスインを使用してこれを実行できるようです。同様のことを実行できるタグベースのテンプレートエンジンはありますか?

4

3 に答える 3

1

遠位テンプレートには、ネストされたツリーの例があります。

http://code.google.com/p/distal/wiki/UseCaseExamples#Building_a_nested_tree

于 2012-05-24T12:18:02.380 に答える
1

テンプレート エンジンは、一般的なありふれた問題を解決できます。テンプレートのネストは一般的な使用例のように思えますが、それができるテンプレート エンジンはあまり見たことがありません。

市場は良い解決策を提供しなかったので、私は自分自身をレンダリングする方法を知っている JavaScript オブジェクトからアプリケーションを構築しています。テンプレートを使用することはありません。すべてのブロックが DOM への参照を取得するか (親要素がアタッチする必要があります)、レンダラーが子コンテナーを返し、親要素がそれを適切な場所に追加できます。

これにより、テンプレート エンジンの制限なしに JS の機能を最大限に活用できます。

[編集]回避策は次のとおりです。再帰要素が必要な場合は、 span(再帰要素がインラインである必要がある場合) またはdiv(ブロック要素の場合) を追加します。recursiveTemplateクラスとデータ属性を与える data-template-name="..."

標準のテンプレート エンジンでテンプレートを実行します。その後、jQuery などを使用して、クラスrecursiveTemplateを持つすべての要素を検索し、それらを自分で置き換えます。

于 2012-05-14T15:52:55.067 に答える
-1

@TJHeuvelが言ったように、サーバー側スクリプトを使用して目的の出力を生成できます。これは、必要なことを行うための最良の方法です。ただし、JavaScript を使用する必要がある場合は、jQuery を使用すると、目的の結果を生成することもできます。

例えば:

$("ul li").css("margin-left", "10px");
于 2012-05-14T08:13:19.017 に答える