10

私はBackboneとBackbone.Marionetteを既存のWebアプリケーションプロジェクトに統合する過程にあります。今のところ、プロジェクトの既存の機能はすべてそのままにしておく予定ですが、新しい機能はすべて、バックボーン構造化とマリオネットプリンシパルを利用します。ビジネスの最初の順序の1つは、HTMLテンプレートレンダリングライブラリと、これらのテンプレートのデータバインディングソリューションを決定することです。以前は、すべてのテンプレートのニーズとデータバインディングにJsRenderJsViewsを使用していましたが、新しい機能の新しい方法を模索していきます。ですから、基本的に私はさまざまな解決策を研究してきましたが、今は何を選ぶべきかについていくつかのアドバイスや考えが必要です。これが私がこれまで見てきたことです:

Backbone.StickIt

長所:テンプレートを非常に「クリーン」に保つのに役立つ懸念事項を分離するというBackboneの考え方に従っているようです。

短所:バインディングを定義するには、ビューにもう少しコードを記述する必要があるようです。また、条件付きレンダリングを実行する機能が不足しているようです。そのため、常に完全なテンプレートをレンダリングし、特定の要素の表示を切り替える必要があります。

Rivets.js

長所:テンプレートを乱雑にすることなく、テンプレート内でもう少し多くのデータバインディングオプションを処理します。

短所:また、条件付きレンダリングが不足しているようです。

ノックバック/ノックアウト

長所:属性を介してあらゆる種類のデータバインディングのニーズを処理します。

短所:コンバーターを使用してテンプレートを「汚す」ことを簡単に開始できます。バックボーンモデルからノックアウトビューモデルを作成するには、別の手順を追加する必要があります。

JsViews

長所:Knockoutの機能に似ていますが、構文が異なります。条件付きレンダリングを処理します。

短所:以前は、テンプレート内にビジネスロジックを追加しすぎてテンプレートを汚していましたが、これは開発の問題であり、修正できる可能性があります。JsViewsの可観測性機能をBackboneモデルイベントに関連付ける機能を作成する必要があります。StickItやKnockbackなどの他のライブラリは、これを自動的に処理します。

また、StickItとRivetsの中間にあるBackbone.ModelBinderも調べました。

誰かが行った決定と、なぜあるプラグイン/ライブラリを別のプラグイン/ライブラリよりも選んだのかを共有できますか?他の提案も受け付けています。ありがとう。

4

1 に答える 1

2

私はこれらを使用しました

口ひげ.js

長所: mustache は変数バインディングをサポートするだけでなく、関数バインディングも処理できます。たとえば、あなたが持つことができます

<a href="{{test}}" >click me </a>

そして、ビューには test というメソッドがあります。これにより、クラス/ID をリンクに割り当てる余分な作業が大幅に節約され、View クラスのイベントがバインドされます。

短所:私はそれの構文が好きではありません。

次に、jst eco テンプレート システムが組み込まれている Ruby on Rails で coffeescript を使用します。プロは、別のファイルにテンプレートがあることです。ページロード時に、dom のグローバル変数にバインドされます。これらは縮小されており、疑似スクリプト テンプレート タグよりもはるかに優れています。もう 1 つの長所は、Ruby で行うように if else および for ループを作成することです。欠点は、かみそりのタグを使用し、サーバー側のコード (翻訳など) と簡単に混合できないことです。

他のライブラリはもちろん、アンダースコア テンプレート エンジンです。非常にシンプルですが、非常に強力です。Proside、すでに利用可能です (バックボーンにはアンダースコアが必要です)。欠点は、(既定では) 外部ファイルからテンプレートを読み込めないことです。サーバー側コード (require_once、render partial) を使用してこれを解決しました。ただし、require.js をテキスト プラグイン ( http://requirejs.org/docs/download.html#text ) と一緒に使用する場合は、テンプレートを依存関係として読み込むことができます。

于 2013-02-08T22:32:02.870 に答える