一般的な意見に反して、Ember.jsはBackbone.jsに対する「より重いアプローチ」ではありません。これらは、まったく異なる最終製品を対象とするさまざまな種類のツールです。Emberのスイートスポットは、ユーザーがアプリケーションを長期間、おそらく1日中開いたままにし、アプリケーションのビューまたは基になるデータとの対話がビュー階層の大幅な変更をトリガーするアプリケーションです。EmberはBackboneよりも大きいですが、おかげで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のマップとリスト。
Backboneを使用して、Emberがターゲットとする種類のアプリケーション(Rdioなど)を作成できます。a )メモリリークやゾンビイベントなどの問題を回避するために、担当するアプリケーションコードの量を増やします(このアプローチは個人的にはお勧めしません)。またはb)backbone.marionetteやCoccyxなどのサードパーティライブラリを追加する-これらのライブラリの多くは、すべて同様の重複機能を提供しようとし、おそらく、より大きく、より多くのグルーコードを必要とする独自のカスタムフレームワークを組み立てることになります。 Emberを使用したばかりの場合。
最終的に、「どちらを使用するか」という質問には2つの答えがあります。
まず、「私のキャリアでは、一般的にどちらを使用する必要がありますか」:どちらも、将来やりたい仕事に固有のツールを学習することになるのと同じです。「バックボーンまたはD3?」と尋ねることは決してありません。「バックボーンまたはエンバー」も同様にばかげた質問です。
次に、「具体的には、次のプロジェクトでどちらを使用する必要がありますか」:プロジェクトによって異なります。どちらもRailsサーバーと同じくらい簡単に通信します。次のプロジェクトに、サーバーによって生成されたページと、JavaScriptによって提供されるいわゆる「豊かな島」が混在している場合は、Backboneを使用します。次のプロジェクトですべてのインタラクションがブラウザ環境にプッシュされる場合は、Emberを使用してください。