jQueryテンプレートエンジン[終了]


204

クライアント側を使用するテンプレートエンジンを探しています。私はjsRepeaterやjQueryテンプレートのようなものをいくつか試してきました。FireFoxでは問題なく動作しているように見えますが、IE7では、HTMLテーブルのレンダリングに関してはすべてが機能しないようです。

MicrosoftAjaxTemplates.js(http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=16766から)も確認しましたが、同じ問題があることがわかりました。

使用する他のテンプレートエンジンに関するアドバイスはありますか?


1
私はこの質問を2度賛成したいと思いました:)
Mark Schultheiss

1
私は非常に素晴らしい(ただしベータ版ではない)JSViewsとJSRenderをチェックします。これは公式のJQuery / UIテンプレートエンジンのようです(少なくともこれはロードマップのとおりです)
Eran Medan

1
:JsRenderは現在パブリックベータ候補持つborismoore.com/2012/03/...
ジョン・パパ

私は今DoTテンプレート、良いパフォーマンス、そして口ひげのような表記を使用しています
Eran Medan

回答:


109

Rick StrahlによるjQueryによるクライアントテンプレート作成の投稿を確認してください。彼はjTemplatesを探索しますが、John Resigのマイクロテンプレートソリューションをより良いものにして、さらに改善します。良い比較、たくさんのサンプル。


3
github.com/jquery/jquery-tmplは、Resigのテンプレートプラグインの実際のリポジトリです。
Alexander Bird、

@ Thr4wn、再現のソースは、リンクされた記事で説明されているライブラリよりかなり重要です。どちらもResigによるものです。
フランクシュウィーターマン2010

@フランク「再現のソースは、リンクされた記事で説明されているライブラリよりもかなり重要です」ええと?何だって?これが何を意味するのかわからない。
Mark Schultheiss、2010

2
@マーク:彼は「大幅に異なる」ことを意味しました。
Domenic

これを使って構築された複雑なフォームの例を見たことがありません。オブジェクトの配列にバインドされたフォームの新しい要素に対応するために、テンプレート全体の一部である行を追加するために必要なことを誰かが探索しましたか?テンプレートには、配列の要素インデックスのテンプレートが含まれ、POSTのために適切にシリアル化できます。しかし、私はそれを完全に考えるのに苦労しています。目標は、InfoPathに似た機能です。(私はさまざまな既存のinfopath機能とinfopathの代替案を認識しています。)
Jason Kleban

47

これについていくつかの研究を行ったばかりで、私はjquery-tmplを使用します。どうして?

  1. それはジョン・レジグによって書かれました。
  2. コアjQueryチームによって「公式」プラグインとして維持されます。 編集:jQueryチームはこのプラグインを廃止しました。
  3. シンプルさと機能性の完璧なバランスが取れています。
  4. それは非常にクリーンでよく考えられた構文を持っています。
  5. デフォルトではHTMLエンコードされます。
  6. それは非常に拡張可能です。

詳細:http : //forum.jquery.com/topic/templating-syntax


+1。でもリック・ストラールを使った。Bcozは小さなもので、私の目的を十分に果たしています。
IsmailS 2010

これが公式のプラグインであることが発表されました
serg

20
残念ながら、それは減価償却されました。フォーカー?
OnesimusUnbound 2010年

3
シナリオは2012年に変更されましたか、つまり、resigの元のスクリプトに基づいて開発されたライブラリを使用してテンプレートを作成するより良い解決策はありますか?
Rajat Gupta 2012

4
@OnesimusUnbound JS Renderによってスーパーシードされました。github.com/BorisMoore/jsrender
Blowsie

23

jQote:http ://aefxx.com/jquery-plugins/jqote/

誰かがResigのマイクロテンプレートソリューションを取り、それをjQueryプラグインにパッケージ化しました。

Resigが自分のものをリリースするまで(彼が自分のものをリリースする場合)、これを使用します。

先端をありがとう、ewbi。


7
これがjQote2になりました:aefxx.com/jquery-plugins/jqote2
Alex Angas

17

jQuery Nano

テンプレートエンジン

基本的な使い方

次の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>

テストページ...


これは制御構造(ifsとループ)を実行しません
mahemoff

13

jQuery-tmplは、jQuery 1.5以降のjQueryコアに含まれます。

http://blog.jquery.com/2010/10/04/new-official-jquery-plugins-provide-templating-data-linking-and-globalization/

公式ドキュメントはこちら:

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/


11

特定の問題をどのように処理するかはわかりませんが、PUREテンプレートエンジンもあります。


制限に加えて、PUREは非常に使いやすい
Jader Dias

@ジェイダー、どのような制限が最も痛いですか?
マイク

@Mic PUREは設計により制限されています。サーバー側のテンプレートエンジンでは、有効なHTMLに固執する必要はありませんが、PUREはHTMLに基づいています。ただし、別のJavaScriptテンプレートエンジンをサーバー側のエンジンと同じくらい強力にすることができる癖があると思います。
Jader Dias

@ Jader、HTMLのみで問題ありません。しかし、癖や別のエンジンが何を意味するのか理解できませんでした。
マイク

@Mic PUREは、一部の機能を含めることができるように、最初から書き直す必要があります。無効なHTMLテンプレートを許可するには、scriptとはtype異なる属性のタグを使用する必要がありますtext/javascript。これは、無効なHTMLを許可する「癖」の1つです。
Jader Dias

7

それはあなたが「ベスト」をどのように定義するかに依存します。トピックに関する私の投稿をここで参照してください

あなたが最速を探しているなら、ここに素晴らしいベンチマークがあります、それはDoTが勝利し、他のすべての人を置き去りにしているようです

あなたが最も公式の JQueryプラグインを探しているなら、これが私が見つけたものです

パートI:jQueryテンプレート

ベータ版の一時的に公式な JQueryテンプレートプラグインは、http: //api.jquery.com/category/plugins/templates/でした。

しかし、明らかに、それほど前のことではありませんが、ベータ版を維持することが決定されました...

注:jQueryチームは、このプラグインをベータ版から除外することを決定しました。それはもはや積極的に開発または保守されていません。ドキュメントは、適切な代替テンプレートプラグインの準備ができるまで、当面(参照用)残ります。

パートII:次のステップ

新しいロードマップには、プラグインの新しいセットを目指しているように見える、JSRender(DOMとは独立して、さらにはjQueryのテンプレートレンダリングエンジン)とJSViews結合およびオブザーバー/ observableパターンの実装いくつかの素晴らしい情報を持っています

これはトピックに関するブログ投稿です

http://www.borismoore.com/2011/10/jquery-templates-and-jsviews-roadmap.html

そして、ここに最新の情報源があります

その他の資料

まだベータ版ではなく、ロードマップアイテムにすぎませんが、テンプレートとUIバインディング用の公式のJQuery / JQueryUI拡張機能になるのに適しているようです。


4

ばかになるだけ^^

// 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');

http://jsfiddle.net/molokoloco/w8xSx/ ;)


3

これはjsquery固有ではありませんが、GoogleがオープンソースとしてリリースしたJSベースのテンプレートライブラリを次に示します。

http://code.google.com/p/google-jstemplate/

これにより、DOM要素をテンプレートとして使用できるようになり、再入可能になります(テンプレートレンダリングの出力が、別のデータモデルで再レンダリングできるテンプレートであるという点で)。


2

他の人はjquery-tmplを指摘し、私はそれらの答えを支持しました。ただし、必ずgithubフォークを確認してください。

重要な修正や興味深い機能もあります。 http://github.com/jquery/jquery-tmpl/network


1
修正を探すための特定のフォークはありますか?
Kevin Hakanson、2010

TBH、少し面倒です... 変更を簡単にスキャンし、appendtoが会社であるという事実を検討した後、github.com / appendto / jquery-tmplに行きました。YMMV
Yann

jquery-tmplは公式の1.4.3ディストリビューションに含まれています。
Yann


1

.NET Framework 2.0 / 3.5で作業している場合は、http://JsonFx.netで実装されているJBSTを確認する必要があります。これには、使い慣れたJSP / ASP構文を持つクライアント側のテンプレートソリューションがありますが、実行時に解析する必要のない、キャッシュ可能なコンパクトなテンプレート用にビルド時にプリコンパイルされます。テンプレート自体が純粋なJavaScriptにコンパイルされるため、jQueryおよびその他のJavaScriptライブラリとうまく連携します。



1

非常に軽い作業にはjquery-tmplで十分ですが、場合によっては、データがそれ自体をフォーマットする方法を知っている必要があります(悪いこと!)。

よりフル機能のテンプレートプラグインを探している場合は、Orange-Jをお勧めします。Freemarkerに触発されました。オブジェクト、配列、インラインJavaScript、テンプレート内のテンプレートをループするかどうかをサポートし、出力用の優れたフォーマットオプション(maxlen、wordboundary、htmlentitiesなど)を備えています。

ああ、そして簡単な構文。


0

テンプレートをどのように設計するかを少し考えてみてください。

リストされている多くのテンプレートソリューション(jQote、jquery-tmpl、jTemplates)の1つの問題は、HTMLに非HTMLを挿入する必要があることです。これは、HTMLツールやHTMLデザイナーの開発プロセスでの作業が面倒な場合があります。 。私は個人的にはそのアプローチの感触が好きではありませんが、長所と短所があります。

通常のHTMLを使用するテンプレートアプローチの別のクラスがありますが、要素の属性、CSSクラス、または外部マッピングを使用してデータバインディングを示すことができます。

ノックアウトはこのアプローチの良い例ですが、私は自分でそれを使用したことがないので、投票に任せて、他の人が気に入っているかどうかを判断します。少なくとも私がそれで遊ぶ時間があるまで。

別の回答としてリストされているPUREは、このアプローチの別の例です。

参考までに、chain.jsも確認できますが、最初のリリース以降、あまり更新されていないようです。詳細については、http://javascriptly.com/2008/08/a-better-javascript-template-engine/を参照してください。



0

私は現在、マルチHTMLテンプレートフレームワークを使用しています。このフレームワークにより、テンプレート化されたデータをDOMに簡単にインポートできます。また、素晴らしいMVCモデリング。

http://www.enfusion-framework.org/ (サンプルをご覧ください!)


-1

beeboleによるPUREの書き換えもあります-jqueryピュアhtmlテンプレート-https ://github.com/mpapis/jquery-pure-templates

主にjqueryセレクターを使用して、より多くの自動レンダリングを可能にする必要があります。これは、HTMLに凝ったものを配置する必要がないというより重要なことです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.