クライアント側を使用するテンプレートエンジンを探しています。私はjsRepeaterやjQuery Templatesのようないくつかを試してきました。 FireFoxでは問題なく動作しているように見えますが、HTMLテーブルのレンダリングに関してはIE7ではすべて機能しなくなるようです。
また、MicrosoftAjaxTemplates.js( http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=16766 から)を調べましたが、同じ問題があることがわかりました。
使用する他のテンプレートエンジンに関するアドバイスはありますか?
Rick Strahlの投稿 jQueryを使用したクライアントテンプレート をご覧ください。彼はjTemplatesを探求しますが、John Resigの マイクロテンプレートソリューション のより良いケースを作り、さらにそれを改善します。良い比較、たくさんのサンプル。
これについていくつか調査したところ、 jquery-tmpl を使用します。どうして?
jQote: http://aefxx.com/jquery-plugins/jqote/
誰かがResigのマイクロテンプレートソリューションをjQueryプラグインにパッケージ化しました。
Resigが自分のものをリリースするまでこれを使用します(彼が自分のものをリリースする場合)。
先端をありがとう、ewbi。
テンプレートエンジン
基本的な使用法
次のJSON応答があると仮定します。
data = { user: { login: "tomek", first_name: "Thomas", last_name: "Mazur", account: { status: "active", expires_at: "2009-12-31" } } }
あなたが作ることができます:
nano("<p>Hello {user.first_name} {user.last_name}! Your account is <strong>{user.account.status}</strong></p>", data)
準備ができた文字列を取得します:
<p>Hello Thomas Mazur! Your account is <strong>active</strong></p>
テストページ...
jQuery-tmplは、jQuery 1.5以降のjQueryコアに含まれます。
公式ドキュメントは次のとおりです。
http://api.jquery.com/category/plugins/templates/
編集:これはjQuery 1.5から除外されており、jQuery UIグリッドによって依存するため、jQuery UIチームによって調整される予定です。
http://blog.jquery.it/2011/04/16/official-plugins-a-change-in-the-roadmap/
特定の問題をどのように処理するかはわかりませんが、 PURE テンプレートエンジンもあります。
それはあなたがどのように「最良」を定義するかによります。私の投稿をご覧ください here トピック
fastestを探すと、ここにニースがあります ベンチマーク 、それは DoT が勝っているようです、他の全員を置き去りにする
最も公式JQueryプラグインを探しているなら、ここに私が見つけたものがあります
パートI:JQueryテンプレート
ベータ版 temporarily-official JQueryテンプレートプラグインはこれでした http://api.jquery.com/category/plugins/templates/
しかし、明らかに、それほど前ではないが、ベータ版でそれを維持することに決めました...
注:jQueryチームは、このプラグインをベータ版として使用しないことを決定しました。現在、積極的に開発または保守されていません。ドキュメントは、適切な置換テンプレートプラグインの準備が整うまで(参照用)当面ここに残ります。
パートII:次のステップ
新しいロードマップ は新しいプラグインのセットを目指しているようですJSRender(DOMおよびJQueryテンプレートレンダリングエンジンに依存しない)およびJSViewsいくつかのNiceデータバインディングとオブザーバー/オブザーバブルパターンの実装
トピックに関するブログ投稿です
http://www.borismoore.com/2011/10/jquery-templates-and-jsviews-roadmap.html
そして、これが最新のソースです
その他の資料
トピックに関する素晴らしいプレゼンテーション http://www.slideshare.net/BorisMoore/jsviews-next-generation-jquery-templates
まだベータ版ではなく、ロードマップ項目にすぎませんが、テンプレートおよびUIバインディングの公式JQuery/JQueryUI拡張機能になるのに適しているようです。
http://garann.github.com/template-chooser/ このリンクは、Javascriptベーステンプレートを選択するのに非常に役立ちます。
愚か者だけになる^^
// LighTest TPL
$.tpl = function(tpl, val) {
for (var p in val)
tpl = tpl.replace(new RegExp('({'+p+'})', 'g'), val[p] || '');
return tpl;
};
// Routine...
var dataObj = [{id:1, title:'toto'}, {id:2, title:'tutu'}],
tplHtml = '<div>N°{id} - {title}</div>',
newHtml = '';
$.each(dataObj, function(i, val) {
newHtml += $.tpl(tplHtml, val);
});
var $newHtml = $(newHtml).appendTo('body');
これはjsquery固有のものではありませんが、GoogleがオープンソースとしてリリースしたJSベースのテンプレートライブラリです。
http://code.google.com/p/google-jstemplate/
これにより、DOM要素をテンプレートとして使用でき、再入可能です(テンプレートレンダリングの出力は、別のデータモデルで再レンダリングできるテンプレートのままです)。
他の人はjquery-tmplを指摘しており、私はそれらの答えを支持しました。ただし、GitHubフォークを必ず確認してください。
そこには重要な修正と興味深い機能があります。 http://github.com/jquery/jquery-tmpl/network
.NET Framework 2.0/3.5で作業している場合は、 http://JsonFx.net で実装されているJBSTを確認する必要があります。使い慣れたJSP/ASP構文を備えたクライアント側のテンプレートソリューションがありますが、実行時に解析する必要のないコンパクトなキャッシュ可能なテンプレート用にビルド時にプリコンパイルされます。テンプレート自体は純粋なJavaScriptにコンパイルされるため、jQueryおよびその他のJavaScriptライブラリでうまく機能します。
Jtemplates jqueryプラグを使用していましたが、パフォーマンスは本当に悪かったです。トリムパス( http://code.google.com/p/trimpath/wiki/JavaScriptTemplates )に切り替えました。これにより、パフォーマンスが大幅に向上しました。 IE7またはFFに問題はありません。
非常に軽い作業にはjquery-tmplで十分ですが、場合によってはデータがそれ自体をフォーマットする方法を知っている必要があります(悪いことです!)。
より完全な機能を備えたテンプレートプラグインを探している場合は、 Orange-J をお勧めします。 Freemarkerに触発されました。オブジェクト、配列、テンプレート内のテンプレートを含むインラインJavaScriptのループをサポートし、出力(maxlen、wordboundary、htmlentitiesなど)の優れたフォーマットオプションを備えています。
ああ、簡単な構文。
John Resigのブログには、彼が投稿したものがあります。 http://ejohn.org/blog/javascript-micro-templating/
テンプレートをどのように設計したいかを少し考えてみてください。
リストされた多くのテンプレートソリューション(jQote、jquery-tmpl、jTemplates)の1つの問題は、HTMLにHTML以外を挿入する必要があることです。 。長所と短所はありますが、私は個人的にそのアプローチの感触が好きではありません。
通常のHTMLを使用する別のクラスのテンプレートアプローチがありますが、要素属性、CSSクラス、または外部マッピングを使用してデータバインディングを示すことができます。
Knockout はこのアプローチの良い例ですが、私はそれを自分で使ったことがないので、他の人が好きかどうかを決めるために投票に任せています。少なくとも、それでもっと遊ぶ時間があるまでは。
PURE 別の答えとしてリストされているのは、このアプローチの別の例です。
参考のために chain.js を参照することもできますが、元のリリースからあまり更新されていないようです。詳細については http://javascriptly.com/2008/08/a-better-javascript-template-engine/ を参照してください。
Dropbox 使用 John Resigのテンプレートエンジン Webサイトで。 Dropboxのこの jsファイル で確認できるように、少し変更されています。このファイルでtmplを検索すると、テンプレートエンジンのコードが作成されます。
ありがとう。それが誰かに役立つことを願っています。
現在、マルチHTMLテンプレートフレームワークを使用しています。このフレームワークにより、テンプレート化されたデータをDOMにインポートすることが非常に簡単になります。また、優れたMVCモデリング。
http://www.enfusion-framework.org/ (サンプルを見てください!)