2015-03-02 8 views
35

Quali sono i vantaggi di Flux + React su Backbone + React. Ci sono delle differenze di prestazioni oltre alla facilità di sviluppo del codice per un enorme codice complesso.Flux + React vs Backbone + React

E se avessimo una relazione 1: 1 tra il modello e una vista di reazione in un'applicazione che utilizza Backbone + React?

risposta

41

Flux è un modello di architettura per costruire React applicazione. Quindi puoi utilizzare i modelli Backbone e le raccolte all'interno dei tuoi negozi per recuperare e archiviare i dati.

E se si desidera utilizzare solo la funzione Virtual DOM di React, non è necessario utilizzare react.js. Ci sono molte librerie, aggiungendo la funzione Virtual DOM alla tua applicazione (https://github.com/Matt-Esch/virtual-dom).

mia raccomandazione: se si utilizzerà modello Flux vi consiglio vivamente di utilizzare http://facebook.github.io/immutable-js/ (può essere accoppiato con http://ampersandjs.com/; non dimenticare di definire la funzione di sincronizzazione personalizzato se si sta costruendo applicazione isomorfi). Fondamentalmente non ci sono vantaggi usando i modelli backbone con React (il backbone è pesante, ha bisogno di underscore, che è lento, io invece uso https://lodash.com/).

+0

Aggiungerò a questo che mi è piaciuto molto Flux quando ho smesso di pensare ai miei negozi come analoghi ai modelli in MVC, specialmente nel fatto che non dovrebbero assolutamente recuperare i propri dati come fanno i modelli Backbone. Le azioni devono comunicare con l'API e inviare i dati ai negozi solo tramite il dispatcher: https://cask.scotch.io/2014/10/V70cSEC.png. Se ci pensi in questo modo, è più chiaro perché i modelli Backbone non sono molto adatti. –

+0

Usiamo Backbone + React in alcune parti del nostro codebase (il vecchio codice backbone legacy integrato con react), e IMO, sconfigge lo scopo di reagire, cioè le viste a un flusso di dati unidirezionale. Backbone è progettato per funzionare con modelli che non sono necessariamente unidirezionali. – kunl

4

I negozi IMHO Flux non sono incompatibili con i modelli/raccolte Backbone. Probabilmente si possono usare collezioni Backbone come archivi Flux, a patto che li si integri con il dispatcher Flux e si permetta loro di emettere un evento per attivare un rendering.

Non sono sicuro che i modelli Backbone siano pensati per essere strutture di dati immutabili in primo luogo, rendendo quindi più difficile per React ottimizzare il rendering.

Direi anche che non ho mai trovato davvero utili tutti questi metodi di modelli/raccolte Backbone. In un'architettura Flux, le richieste API tendono a essere attivate dai creatori di azioni e non direttamente dai negozi, consentendo così a più negozi di ascoltare lo stesso completamento della richiesta.

Where should ajax request be made in Flux app?

+1

@fisherwebdev nel thread di commento per la sua risposta: "No, la richiesta di dati nell'archivio non infrange il paradigma [Flux]." http://stackoverflow.com/questions/26632415/where-should-ajax-request-be-made-in-flux-app#comment46461641_26637579 –

+0

Sono assolutamente d'accordo! flusso e spina dorsale funzionano bene insieme, purché non cadiate in cattive abitudini. collezioni e modelli di backbone sono mutabili, ma ciò non significa che devi usarli in questo modo. Ho agganciato le mie raccolte per registrarmi con un dispatcher di flusso, e questo è l'unico modo in cui autorizzo i dati a entrare o uscire dal negozio. le raccolte backbone offrono un bel negozio pre-costruito in modo da non dover comporre manualmente. Inoltre, i modelli di backbone consentono di applicare lo schema sui dati che si stanno iniettando. Aggiunge molta raffinatezza ai tuoi archivi di dati. – avocadojesus

1

Una cosa bella di React è che è agnostico: è possibile utilizzarlo con i modelli Backbone e le collezioni senza problemi.

Flux è un'architettura suggerita, ma penso che il modello diventi così grande per MVC che alla fine non vale la pena provare a usarli entrambi: Usa Reagire con Flusso o Reagisci con i modelli e le raccolte Backbone.

Non consiglierei di utilizzare i modelli/raccolte Backbone come archivi Flux - non sono la stessa cosa. La ragione principale è che un negozio di flussi non può essere mutato dall'esterno - non fornisce setter. Un archivio Flux modifica il proprio stato in risposta alle azioni. E anche se segui la modalità "Flux" usando i modelli Backbone come negozi, il tuo codice ha ancora possibilità di manipolazione diretta dello stato dall'esterno del negozio che potrebbero essere utilizzati in modo scorretto da altri membri del team, ad esempio ...

0

+1 Risposta di Vetrenko Maxim sull'integrazione della spina dorsale e il modello di architettura. Flux è un pattern di flusso di dati per le app React e può utilizzare qualsiasi archivio dati/struttura del modello che si desidera.

I vantaggi di utilizzare Flux + reagiscono: la comprensione

  • più facile dei dati di flusso
  • codice migliore organizzazione
  • più facili problemi relativi ai dati di debug con i modelli
  • archivio dati
  • compartmentalize codice/modello dalla vista

Esistono diversi framework di modelli da utilizzare, preferisco www.js-data.io per React + F lux.

1

La collezione del modello di backbone è mutabile mentre la reazione si basa su un tema, immutabilità. Quindi, usando tecnicamente Backbone + React sta facendo un Anti Pattern. Ho usato entrambi reagire + backbone e reagire + il flusso. Preferirò sicuramente reagire + il flusso sugli altri.

0

Il flusso è un modello architettonico che applica un flusso di dati direzionale. Il pattern Flux è generico e non è specifico per le applicazioni React. Con Flux, sarà impedito il flusso di dati scarsamente definito e la mancanza di integrità dei dati.

Se si sceglie Backbone, è possibile combinare questi due fintanto che si sa quando utilizzare il modo Flux e il modo Backbone.

Problemi correlati