3

私は自分のプロジェクトでノックアウトと jQuery.tmpl フレームワークを使用していますが、時々 jquery-tmpl を使用して次のような HTML を生成します。

var html = $("#template").tmpl(data);
html.appendTo(destElement);  

どこかにバインド用のノックアウト テンプレートがあり、どこかに HTML 生成用とバインド用の jquery テンプレートがあるのは好きではありません。

jquery tmpl のように、ノックアウトがテンプレートから html を生成する機能を提供するかどうかを知りたいです。そうであれば、jquery-tmpl を完全に削除します。ほとんどの場合、テンプレートからの html 生成にのみ使用するためです。

ご意見をお聞かせください

4

1 に答える 1

3

AFAIK Knockout は、jQuery テンプレートのようにプリコンパイル テンプレートを JavaScript 変数として保存することをサポートしていません。

したがって、質問で示した例は、Knockout テンプレート バインディングのみを使用することはできません。バインディングは、レンダリング後およびレンダリング後のいくつかのコールバックを提供しますが、これらのコールバックの入力が、JavaScript 参照ではなく、コンパイルされた DOM 要素であるため、これは完全に同じではありません。

現在のプロジェクトでは、テンプレート エンジンとしてハンドルバーを使用しています。これを選択した主な理由は次の 2 つです。

  1. jQuery テンプレートは非推奨であり、現在公式のプラグインは存在せず、jQuery UI チームはコアにテンプレートを含める時期/場合について不明です。
  2. Handlebars を使用すると、テンプレートを抽出して、コマンド ラインからプリコンパイルできる別の .handlebars ファイルにすることができます。

ノックアウト テンプレート バインディングは使用しません。すべてのテンプレートは個別のファイルに抽出され、個別の .js ファイルにプリコンパイルされます。コンパイル済みの .js ファイルをインクルードするだけで、JS 変数としてテンプレートにアクセスできます。

jQuery テンプレートを選択し、テンプレートをプリコンパイルしたい場合は、すべてのテンプレートを 1 つの HTML ファイルに追加し、各テンプレートを取得して JavaScript に変換する JavaScript を記述するか、小さなノードを作成する必要があります。テンプレートを取り込んで変換し、再度出力するアプリ。

于 2012-07-12T14:24:56.893 に答える