6

私はhttp://github.com/janl/mustache.jsを評価しています

そして私はそれが時間とともに一般的にどのように機能するかを考えています。巨大なオブジェクトを作成しただけの場合、それを任意の形式のHTMLに変換するには口ひげで十分ですか?

だから、私の質問はです。口ひげができないことはありますか?

(私の考えでは、JSONからHTMLへのツリー変換にすぎないと思いますが、それを検証する方法や、それに賭けるのに十分な自信を得る方法がわかりません)

さらなる解明

私が持っていたのは巨大なオブジェクトだけで、それから1回の反復で口ひげのテンプレートを与えたと仮定します。HTMLには、その言語では口ひげで表現できないものがありますか。

4

2 に答える 2

8

MustacheはJavaScriptの単なるテンプレート言語であるため、JavaScriptで既に実行できることは何でも実行でき、JavaScriptはチューリング完全です。いいえ、Mustacheでできないことは何もありません。実際、Mustacheでできることは、JavaScriptで自分でできないことはありません。それは、いくつかのことをより便利にするだけです。

このようなことを評価するときは、何ができるのか、何ができないのかを判断するのではなく、「必要なことを簡単にできるのか」「避けたい間違いをするのは難しいのか」を問うほうが便利です。 。」

たとえば、それを評価する1つの方法は、クロスサイトスクリプティング(XSS)攻撃を簡単に回避できるかどうかです。ドキュメントによると、「mustache.jsは、標準のダブル口ひげ構文を使用するとすべての値をエスケープします」ので、この種の攻撃を防ぐのに役立つようです。

それを評価するより良い仕事をするために、あなたはあなたの要件が何であるかについてより多くの詳細を提供する必要があるでしょう。あなたは何をしようとしているのですか?何と統合する必要がありますか?

編集

明確にした後でも、何を探しているのかはまだ正確にはわかりません。単一のビューを入力として単一のMustacheテンプレートを展開するように制限する場合でも、任意の文字列を生成できます。したがって、その文字列を入力として指定するだけで、任意のHTMLを生成できます。

テンプレートとレンダリングするビューを指定して任意の計算を実行できるかどうかを尋ねる場合、Mustacheではテンプレート内の関数を呼び出すことができ、それらの関数はJavascriptで記述されているため、その答えも「はい」です。チューリング完全です。

しかし、これらはどちらも些細な答えです。入力として提供することで任意の出力を生成できます。または、高次セクションを使用して任意の計算を実行できます。さっきも言ったように、それでできることは簡単なことよりも面白くなく、どんな間違いを犯しにくいのか。

弱点の1つは、探しているタイプかもしれませんが、Mustacheシステム自体が提供するよりも多くの電力が必要な場合は、ビューの一部としてそれらの関数を渡す必要があることです。したがって、表示されているオブジェクトを、それを表示するために使用されるコードと混同する必要があります。また、テンプレートに渡されるビューからJavascriptを呼び出す機能を削除すると、実行できる操作が大幅に制限されます。これらのオブジェクトが「ビュー」として知られているという事実を考えると、プレゼンテーションロジックでそれらを混合するのは設計によるもののようです。これは、テンプレートがモデルオブジェクトから直接値を抽出できるようにするテンプレートシステムとは大きく異なります。

于 2010-09-22T03:09:51.737 に答える
3

はい、口ひげではできないことがたくさんあります。Mustacheは、他のフル機能のテンプレートシステム(Djangoのような)よりも単純です。Mustacheは非常に最小限のテンプレートシステムであり、(機能が不足しているため)「ロジックレス」テンプレートを実装することをお勧めします。つまり、他のテンプレートシステムで実行できる処理の一部は、テンプレートに送信されるデータを変更するコードで実行する必要があります。

それは悪いテンプレートシステムではなく、シンプルで高速であることを目的とした最小限のシステムです。

したがって、この質問に対する答えは、「はい、Mustacheでは(他のいくつかのテンプレートシステムと比較して)できないことがあります」と言えます。

于 2011-08-22T14:54:16.243 に答える