一般的な意見に反して、Ember.jsはBackbone.jsに対する「より重いアプローチ」ではありません。これらは、まったく異なる最終製品を対象とするさまざまな種類のツールです。Emberのスイートスポットは、ユーザーがアプリケーションを長期間(おそらく1日中)開いたままにし、アプリケーションのビューまたは基になるデータとの対話がビュー階層の深い変化を引き起こすアプリケーションです。エンバーはバックボーンよりも大きいですが、のおかげでExpires
、Cache-Control
これは最初のロードでのみ問題になります。毎日2日間使用した後、コンテンツに画像が含まれる場合は、追加の30kがデータ転送によって覆い隠されます。
バックボーンは、ビュー階層が比較的フラットなままで、ユーザーがアプリに頻繁にアクセスしたり、アクセスしたりすることが少ない、状態の数が少ないアプリケーションに最適です。バックボーンのコードは、DOMのバッキングデータが破棄され、両方のアイテムがメモリ収集されると想定されているため、短くて甘いままです。https://github.com/documentcloud/backbone/issues/231#issuecomment-4452400バックボーンのサイズが小さいため、短い相互作用にも適しています。
Ember.jsアプリには、SquareのWebダッシュボード、Zendesk(少なくともエージェント/チケット作成インターフェース)、Grouponのスケジューラーが含まれます。ユーザーが1日中作業する可能性のあるすべてのアプリケーションです。
バックボーンアプリは、短いまたはカジュアルなインタラクションに重点を置いています。これは、多くの場合、大きな静的ページの小さなセクションです:airbnb、Khan Academy、Foursquareのマップとリスト。
あなたはできるエンバーターゲット(例えばというアプリケーションの種類を作るためにバックボーンを使用しRDIOメモリリークやゾンビのイベントのような回避問題へのためにあなたがしている責任をアプリケーションコードの量を増やす)ことで)(私は個人的にこの方法をお勧めしません)またはb)backbone.marionetteやCoccyxなどのサードパーティライブラリを追加する–これらのライブラリの多くは、同様の重複する機能を提供しようとするものであり、おそらく、より大きく、より多くの接着剤コードを必要とする独自のカスタムフレームワークをアセンブルすることになります。 Emberを使用しただけの場合。
最終的に、「どちらを使用するか」という質問には2つの答えがあります。
まず、「一般的に、私のキャリアでどちらを使用すればよいか」:どちらも、あなたが将来、やりたい仕事に特化したツールを習得するのと同じように。「バックボーンまたはD3?」と尋ねることは決してないでしょう。「バックボーンまたはエンバー」も同様にばかげた質問です。
第二に、「どちらを使用するべきか、具体的には次のプロジェクトで」:プロジェクトによって異なります。どちらも同じくらい簡単にRailsサーバーと通信します。次のプロジェクトに、サーバーによって生成されたページと、JavaScriptによって提供されるいわゆる「豊かな島」が混在する場合は、Backboneを使用します。次のプロジェクトがすべての対話をブラウザー環境にプッシュする場合は、Emberを使用します。