1. ホーム
  2. ruby-on-rails

[解決済み] RestfulバックエンドのためのEmber.jsまたはBackbone.js [終了しました].

2023-01-04 19:21:32

質問

ember.jsがbackbone.jsに対してよりヘビーウェイトなアプローチであることは既に知っています。両方についての記事をたくさん読みました。

私は自分自身に尋ねています、どちらのフレームワークがrails restバックエンドのためのフロントエンドとしてより簡単に動作するのか。backbone.jsについては、レストバックエンドを呼び出すためのさまざまなアプローチを見ました。emberについては、私は「データ」や「リソース」のようないくつかのより多くのライブラリを含める必要があるようです。なぜこのために2つのライブラリがあるのですか?

それで、何がより良い選択なのでしょうか?フロントエンドとバックエンドを接続する例もあまりありません。バックエンドがこれを呼び出すための良い実用的な例は何でしょうか。

URI: ../restapi/topics GET 認証情報: admin/secrect フォーマット: json

どのように解決するのですか?

一般的な意見とは異なり、Ember.js は Backbone.js の「よりヘビーウェイトなアプローチ」ではありません。これらは、まったく異なる最終製品をターゲットとする、異なる種類のツールなのです。Emberのスイートスポットは、ユーザーが長時間、おそらく一日中アプリケーションを開いたままにし、アプリケーションのビューまたは基礎データとの相互作用が、ビュー階層の深い変化を引き起こすようなアプリケーションです。Ember は Backbone よりもサイズが大きいですが Expires , Cache-Control これは最初の読み込み時のみ重要です。2 日間毎日使用すると、余分な 30k はデータ転送によって影が薄くなり、コンテンツに画像が含まれる場合はすぐにそうなります。

Backbone は、ビュー階層が比較的フラットで、ユーザーがアプリに頻繁にアクセスしないか、短時間しかアクセスしない傾向がある、状態の数が少ないアプリケーションに最適です。 DOM をバックアップするデータが捨てられ、両方の項目がメモリに収集されることを前提としているため、Backbone のコードは短くて甘いままになっています。 https://github.com/documentcloud/backbone/issues/231#issuecomment-4452400 Backboneのサイズは小さいので、短いインタラクションに適しています。

両フレームワークで書かれたアプリは、これらの用途を反映しています。Ember.jsのアプリには Squareのウェブダッシュボード , ゼンデスク (少なくともエージェント/チケットのインターフェイス)、および グルーポンのスケジューラ など、ユーザーが一日中作業するようなアプリケーションばかりです。

Backboneアプリケーションは、より大きな静的ページの小さなセクションであることが多い、短いまたはカジュアルなインタラクションに重点を置いています。 エアビーアンドビー , カーン・アカデミー , Foursquareの地図とリスト .

あなたは できます は、Ember がターゲットとする種類のアプリケーションを作るために Backbone を使用します (例. Rdio など)を作るためにBackboneを使用します。) メモリリークやゾンビイベントなどの問題を回避するために、担当するアプリケーションコードの量を増やす (個人的にはこの方法はお勧めしません)、または b) バックボーン.マリオネット または 尾骶骨 - これらのライブラリは、すべて似たような重複する機能を提供しようとするものが多く、おそらく、Ember を使用した場合よりも大きく、より多くのグルーコードを必要とする独自のカスタムフレームワークを組み立てることになるでしょう。

結局のところ、「どちらを使うか」という質問には2つの答えがあります。

まず、「一般的に、自分のキャリアにおいて、どちらを使うべきか」です。将来やりたい仕事に特化したツールを最終的に学ぶのと同じように、両方です。 BackboneとD3のどちらを使うべきかという質問はしないでしょう。

次に、"次のプロジェクトでは、具体的にどれを使えばいいのでしょうか"。プロジェクトによります。どちらもRailsサーバーと同じように簡単に通信できます。次のプロジェクトで、サーバによって生成されるページと、JavaScriptによって提供されるいわゆる「リッチな島々」とが混在する場合は、Backboneを使用します。次のプロジェクトで、すべてのインタラクションをブラウザ環境にプッシュする場合は、Emberを使用します。