2015-03-02 16 views
35

Jakie są zalety Flux + React over Backbone + React. Czy są jakieś różnice w wydajności, oprócz łatwości tworzenia kodu dla ogromnej złożonej podstawy kodu.Flux + React vs Backbone + React

Co zrobić, jeśli mamy relację 1: 1 między modelem a widokiem reakcji w aplikacji, która korzysta z metody Backbone + React?

Odpowiedz

41

Flux jest wzór architekt budować React aplikację. Możesz więc używać modeli Backbone i kolekcji w swoich sklepach, aby pobierać i przechowywać dane.

A jeśli chcesz korzystać z funkcji DOM tylko po prostu React, nie ma potrzeby używania pliku react.js. Istnieje wiele bibliotek, dodając funkcję Virtual DOM do swojej aplikacji (https://github.com/Matt-Esch/virtual-dom).

Moja rekomendacja: jeśli użyjesz Flux wzór Gorąco polecam korzystanie z http://facebook.github.io/immutable-js/ (może być sprzężony z http://ampersandjs.com/; nie zapomnij zdefiniować niestandardową funkcję synchronizacji, jeśli budują izomorficzna aplikację). Zasadniczo nie ma żadnych korzyści z wykorzystaniem modeli szkieletu z React (szkielet jest ciężki, potrzebuje podkreślenia, które jest wolne, zamiast niego używam https://lodash.com/).

+0

Dodam, że polubiłem Flux znacznie lepiej, gdy przestałem myśleć o moich sklepach jako o analogicznych do modeli w MVC, zwłaszcza że zdecydowanie nie powinny pobierać własnych danych, jak robią to modele szkieletowe. Działania powinny komunikować się z interfejsem API i przekazywać dane do sklepów za pośrednictwem kontrolera: https://cask.scotch.io/2014/10/V70cSEC.png. Jeśli myślisz o tym w ten sposób, to jest bardziej zrozumiałe, dlaczego modele kręgosłupa nie są bardzo dobre. –

+0

Używamy Backbone + React w niektórych częściach naszego codebase (stary kod szkieletowy zintegrowany z reagowaniem) i IMO, który pokonuje cel reakcji, czyli widoki na jednokierunkowy przepływ danych. Backbone jest przeznaczony do pracy z modelami, które niekoniecznie są jednokierunkowe. – kunl

4

Magazyny strumienia IMHO nie są niekompatybilne z modelami/kolekcjami kręgosłupa. Prawdopodobnie możesz używać kolekcji kręgosłupa jako zasobów Flux, jeśli tylko integrujesz je z dyspozytorem Flux i zezwalasz na emitowanie zdarzenia w celu wyzwolenia renderingu.

Po prostu nie jestem pewien, że modele szkieletowe mają być w pierwszej kolejności niezmiennymi strukturami danych, co utrudnia Reactowi optymalizację renderowania.

Powiedziałbym również, że nigdy naprawdę nie znalazłem wszystkich tych modeli/metod kolekcji szkieletów naprawdę przydatnych. W architekturze Flux żądania API byłyby uruchamiane przez twórców akcji, a nie przez sklepy bezpośrednio, co pozwala wielu sklepom słuchać tego samego żądania.

Where should ajax request be made in Flux app?

+1

@fisherwebdev w wątku komentarza dla swojej odpowiedzi: "Nie, wołanie o dane w sklepie nie łamie paradygmatu [Flux]." http://stackoverflow.com/questions/26632415/where-should-ajax-request-be-made-in-flux-app#comment46461641_26637579 –

+0

Całkowicie się zgadzam! topnik i kręgosłup dobrze ze sobą współpracują, o ile nie popadniesz w złe nawyki. kolekcje szkieletów i modele są zmienne, ale to nie znaczy, że musisz ich używać w ten sposób. Podłączyłem moje kolekcje do rejestru z dyspozytorem fluxów i jest to jedyny sposób, w jaki pozwalam na wejście danych do sklepu lub wyjście z niego. kolekcje kręgosłupa oferują ładny, wstępnie zbudowany sklep, dzięki czemu nie musisz komponować ręcznie. dodatkowo modele szkieletowe pozwalają na wymuszenie schematu na danych, które wstrzykujesz. To dodaje wiele wyrafinowania do twoich magazynów danych. – avocadojesus

1

Jedną z zalet React jest to, że jest agnostyczny - można go używać bez problemu z modelami szkieletowymi i kolekcjami.

Flux jest sugerowaną architekturą, ale myślę, że model bardzo różni się od MVC, że na koniec dnia nie warto próbować ich używać - React with Flux LUB React with Backbone models and collections.

Nie polecam używania modeli/kolekcji Backbone jako sklepów Flux - to nie to samo. Głównym powodem jest to, że magazyn strumienia nie może być zmutowany z zewnątrz - nie zapewnia setterów. Sklep Flux mutuje swój własny stan w odpowiedzi na działania. Nawet jeśli podążasz drogą "Flux", używając modeli Backbone jako sklepów, twój kod nadal ma otwarte możliwości bezpośredniej manipulacji stanem spoza sklepu, który może zostać wykorzystany przez innych członków zespołu, na przykład ...

0

+1 Odpowiedź Vetrenko Maxima na integrację szkieletu i wzorca architektury. Flux to wzorzec przepływów danych dla aplikacji React i może wykorzystywać dowolne struktury składnicy danych/modelu.

Zalety korzystania Flux + React:

  • łatwiejszego zrozumienia przepływu danych
  • lepszy kod organizacyjny
  • łatwiejsze kwestie danych debugowania modeli
  • przechowywać dane
  • compartmentalize/kod modelu z widokiem

Istnieje kilka modeli frameworków do wykorzystania, wolę www.js-data.io dla React + F luks.

1

Kolekcja modeli szkieletowych jest zmienna, a jednocześnie reaguje na temat, niezmienność. Tak więc, technicznie użycie Backbone + React wykonuje Anti Pattern. Użyłem obu reagować + kręgosłup i reagować + strumień. Zdecydowanie wolę reagować + fluxować nad innymi.

0

Strumień to wzorzec architektoniczny wymuszający jednokierunkowy przepływ danych. Wzorzec Flux ma charakter ogólny i nie jest charakterystyczny dla aplikacji React. W przypadku Flux zapobiega się źle zdefiniowanemu przepływowi danych i brakowi integralności danych.

Jeśli wybierzesz opcję Szkielet, możesz łączyć te dwa tak długo, jak wiesz, kiedy używać trybu Flux i Szkieletu.

Powiązane problemy