10

私は、既存のWebアプリケーションプロジェクトにBackboneとBackbone.Marionetteを統合する過程にあります。私たちは現在、既存の機能をすべてプロジェクトに残したいと考えていますが、新機能では、Backboneの構造化とMarionetteプリンシパルを利用します。ビジネスの第一歩の1つは、HTMLテンプレートレンダリングライブラリと、これらのテンプレート用のデータバインディングソリューションを決定することです。以前は、私たちはすべてのテンプレートニーズとデータバインディングにJsRenderJsViewsを使用していましたが、私たちは新しい機能の新しい道を模索しています。だから、基本的に私は様々な解決策を研究していますし、何を選ぶべきかについてのアドバイスや考えが必要です。ここで私はこれまで見てきたものである:バックボーン:モデルとテンプレートとテンプレートとモデルの結合

Backbone.StickIt

長所:非常に「きれい」のテンプレートを保つことができます懸念の分離のバックボーンの考えに従うように思われます。

短所:バインディングを定義するために、ビューにもう少しコードを書く必要があるようです。また、条件付きレンダリングを行う能力が不足していると思われるので、常に完全なテンプレートをレンダリングし、特定の要素の表示を切り替えるだけで済みます。

Rivets.js

長所:それはあまりにも乱雑にすることなく、テンプレート内のオプションを結合少しより多くのデータを処理します。

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

Knockback/Knockout

長所:属性を通じてニーズをデータバインディングのすべての種類を処理します。

短所:コンバーターを使用してテンプレートを「ダーティー」するのは簡単です。バックボーンモデルからノックアウトビューモデルを作成するための別のステップを追加する必要があります。

JsViews

長所:ノックアウトの能力には異なる構文を持つ同様。条件付きレンダリングを処理します。

短所:これまで、テンプレート内にビジネスロジックを追加することでテンプレートをダーティにしましたが、これは私たちが修正できる開発の問題である可能性があります。 JsViews監視機能をバックボーンモデルイベントに結びつける機能を作成する必要があります。 StickItやKnockbackのような他のライブラリはこれを自動的に処理します。

は、我々はまた、StickItとリベットの間に、どこかにあるBackbone.ModelBinderに見えました。

誰でも自分の意思決定を共有できますし、なぜ彼らは別のプラグイン/ライブラリを選択したのですか?私は他の提案にもオープンしています。ありがとう。

答えて

2

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

口ひげです。js

プロの:口髭は可変バインディングをサポートするだけでなく、関数バインディングも処理できます。例えば、あなたは持っていることができます

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

そして、あなたのビューでは、テストと呼ばれる方法があります。これにより、レンダントの割り当てクラス/ IDの多くが節約され、Viewクラスのイベントがリンクされバインドされます。

Con's:私はそれの構文が嫌いです。

次は、jst ecoテンプレートシステムでビルドされたRuby on Railsでcoffeescriptを使用します。プロは、別々のファイルにテンプレートを持っています。ページロード時に、DOM内のグローバル変数にバインドされます。これらは縮小されており、擬似スクリプトテンプレートタグよりも優れています。もう1つのプロは、あなたがルビーのようにループしているかどうかを書くことです。欠点は、彼らはかみそりタグを使用し、サーバサイドのコード(翻訳のような)との簡単なミックスインを許可しないということです。

その他のライブラリは、下位テンプレートエンジンです。非常に単純ですが、非常に強力です。 Prosideでは、すでに利用可能です(バックボーンにはアンダースコアが必要です)。欠点は、(デフォルトで)外部ファイルからテンプレートを読み込むことができないことです。私はserversideコード(require_once、部分的なレンダリング)を使用してこれを解決しました。ただし、require.jsをテキストプラグイン(http://requirejs.org/docs/download.html#text)とともに使用すると、テンプレートを依存関係として読み込むことができます。

+1

アンダースコア(私がそれを考慮していなかったことはあなたが言及したように含まれている面白い)をチェックアウトしました。私は "スパゲッティ"テンプレートで同じ問題があるかもしれないと感じました。主な関心事は、テンプレートを扱う多数の開発者がおり、あまりにも多くのロジックとテンプレート構文をHTMLに絡み合わせることでした。だから私たちにその習慣を放棄させるために私たちはバックボーンと一緒に行くことにしました。テンプレートの外にバインディングを作成するのには時間がかかるようですが、HTMLの「清潔さ」のメリットが期待されます。あなたのご意見ありがとうございます。 –

関連する問題