MustacheはJavaScriptの単なるテンプレート言語であるため、JavaScriptで既に実行できることは何でも実行でき、JavaScriptはチューリング完全です。いいえ、Mustacheでできないことは何もありません。実際、Mustacheでできることは、JavaScriptで自分でできないことはありません。それは、いくつかのことをより便利にするだけです。
このようなことを評価するときは、何ができるのか、何ができないのかを判断するのではなく、「必要なことを簡単にできるのか」「避けたい間違いをするのは難しいのか」を問うほうが便利です。 。」
たとえば、それを評価する1つの方法は、クロスサイトスクリプティング(XSS)攻撃を簡単に回避できるかどうかです。ドキュメントによると、「mustache.jsは、標準のダブル口ひげ構文を使用するとすべての値をエスケープします」ので、この種の攻撃を防ぐのに役立つようです。
それを評価するより良い仕事をするために、あなたはあなたの要件が何であるかについてより多くの詳細を提供する必要があるでしょう。あなたは何をしようとしているのですか?何と統合する必要がありますか?
編集
明確にした後でも、何を探しているのかはまだ正確にはわかりません。単一のビューを入力として単一のMustacheテンプレートを展開するように制限する場合でも、任意の文字列を生成できます。したがって、その文字列を入力として指定するだけで、任意のHTMLを生成できます。
テンプレートとレンダリングするビューを指定して任意の計算を実行できるかどうかを尋ねる場合、Mustacheではテンプレート内の関数を呼び出すことができ、それらの関数はJavascriptで記述されているため、その答えも「はい」です。チューリング完全です。
しかし、これらはどちらも些細な答えです。入力として提供することで任意の出力を生成できます。または、高次セクションを使用して任意の計算を実行できます。さっきも言ったように、それでできることは簡単なことよりも面白くなく、どんな間違いを犯しにくいのか。
弱点の1つは、探しているタイプかもしれませんが、Mustacheシステム自体が提供するよりも多くの電力が必要な場合は、ビューの一部としてそれらの関数を渡す必要があることです。したがって、表示されているオブジェクトを、それを表示するために使用されるコードと混同する必要があります。また、テンプレートに渡されるビューからJavascriptを呼び出す機能を削除すると、実行できる操作が大幅に制限されます。これらのオブジェクトが「ビュー」として知られているという事実を考えると、プレゼンテーションロジックでそれらを混合するのは設計によるもののようです。これは、テンプレートがモデルオブジェクトから直接値を抽出できるようにするテンプレートシステムとは大きく異なります。