web-dev-qa-db-ja.com

Flux + React vs Backbone + React

Flux + ReactがBackbone + Reactより優れている点は何ですか。巨大で複雑なコードベースのコード開発の容易さに加えて、パフォーマンスの違いはありますか。

Backbone + Reactを使用するアプリケーションで、モデルとリアクティブビューの間に1:1の関係がある場合はどうなりますか?

40
Student

Fluxは、Reactアプリケーションを構築するためのアーキテクトパターンです。したがって、ストア内でBackboneモデルとコレクションを使用して、データを取得および保存できます。

また、Reactの仮想DOM機能だけを使用する場合は、react.jsを使用する必要はありません。多くのライブラリがあり、アプリケーションに仮想DOM機能を追加しています( https://github.com/Matt-Esch/virtual-dom )。

私の推奨事項:Fluxパターンを使用する場合は、 http://facebook.github.io/immutable-jsを使用することを強くお勧めします/http://ampersandjs.com/ と組み合わせることができます;同型アプリケーションを構築している場合は、カスタム同期関数を定義することを忘れないでください)。基本的に、React(バックボーンが重い、アンダースコアが必要で、遅いため、バックボーンモデルを使用する場合は利点がありません。私は https://lodash.com/ 代わりに)。

45
Vetrenko Maxim

IMHO Fluxストアは、Backboneモデル/コレクションと互換性がありません。 Fluxディスパッチャと統合し、レンダリングをトリガーするイベントを発行できる限り、BackboneコレクションをFluxストアとして使用できます。

Backboneモデルがそもそも不変データ構造であることを確信していないため、Reactがレンダリングを最適化するのを難しくしています。

また、これらすべてのBackboneモデル/コレクションメソッドが本当に便利だとは思いませんでした。 Fluxアーキテクチャでは、APIリクエストはストアではなくアクションクリエーターによって起動される傾向があるため、複数のストアが同じリクエストの完了をリッスンできるようになります。

Fluxアプリのどこでajaxリクエストを行うべきですか?

6

Backboneのモデルコレクションは可変ですが、reactはテーマである不変性に基づいています。そのため、技術的にBackbone + Reactを使用すると、アンチパターンが実行されます。反応+バックボーンと反応+フラックスの両方を使用しました。私は間違いなく他より反応+フラックスを好むでしょう。

3
Jason Bourne

Reactについての良いところは、それが不可知論者であるということです-あなたは問題なくBackboneモデルとコレクションでそれを使うことができます。

Fluxは推奨されるアーキテクチャですが、モデルはMVCに大きく分岐しているため、結局は両方を使用する価値はないと思います-React with Flux OR React Backboneモデルおよびコレクションで。

FluxストアとしてBackboneモデル/コレクションを使用することはお勧めしません-それらは同じものではありません。主な理由は、フラックスストアを外部から変更できないことです。セッターを提供しません。 Fluxストアは、アクションに応じて自身の状態を変化させます。また、Backboneモデルをストアとして使用して「Flux」の方法に従ったとしても、コードには、たとえば、チームの他のメンバーが悪用する可能性があるストアの外部からの状態の直接操作の可能性がまだあります...

3
cassiozen

+1 Vetrenko Maximのバックボーンとアーキテクチャパターンの統合に関する回答。 Fluxは、Reactアプリのデータフローパターンであり、任意のデータストア/モデルフレームワークを使用できます。

Flux + Reactを使用する利点:

  • データフローの理解が容易
  • より良いコード編成
  • モデルに関するデータの問題を簡単にデバッグ
  • ビューからデータストア/モデルコードを区分化する

使用するモデルフレームワークはいくつかありますが、React + Fluxにはwww.js-data.ioを使用します。

0
Cory Robinson

フラックスは、一方向のデータフローを強制するアーキテクチャパターンです。 Fluxパターンは一般的なものであり、Reactアプリケーションに固有ではありません。

Backboneを選択する場合、FluxウェイとBackboneウェイを使用するタイミングを知っている限り、これら2つを組み合わせることができます。

0
Juni Brosas