Zrozumienie wzoru strumienia

12

Właściwie badam wzór strumienia i jest coś, czego nie rozumiem na temat sklepów .

Czym one są dokładnie?

Przeczytałem wiele artykułów i wydaje się, że dotyczy to domeny.

Czy to oznacza, że ​​jest to „abstrakcyjna” część związana z wywołaniami interfejsu API lub wywołaniami backendowymi?

To nie jest dla mnie bardzo jasne.

Edycja: Czy może to być to samo, co fabryka kątowa? Pobieranie zdalnych danych, wykonywanie zadania biznesowego lub przechowywanie niektórych stanów aplikacji (na przykład bieżący użytkownik podłączony)?

mfrachet
źródło
1
Pomocny byłby link do tego, o czym dokładnie mówisz. Masz na myśli ten „wzór strumienia”? fluxxor.com/what-is-flux.html
DougM
Strumień to nic innego jak wzorzec publikowania / subskrypcji z ograniczeniem, że wszystkie dane najpierw przechodzą przez dyspozytora. Gwarantuje to, że dane nie będą cofane (i powodują zamieszanie). Rzeczy takie jak „Sklep”, „Akcja” itp. To po prostu inny sposób mówienia o składnikach systemu i przekazywanych danych.
kiwicomb123

Odpowiedzi:

24

Ok, pozwól, że wyjaśnię ci krok po kroku

1 Co to jest Flux?

  • Wzorzec
  • Scentralizowany dyspozytor
  • Jednokierunkowy przepływ danych
  • Element listy

Nie bez powodu nazywają to Flux.

Implementacje Fluxa

  • Flux na Facebooku
  • Alt
  • Odpływ
  • Speszyć kogoś
  • NuclearJS
  • Płynny

wprowadź opis zdjęcia tutaj

Czat z Fluxem

Reakcja : Hej, ktoś kliknął ten przycisk „Zapisz kurs”.

Działanie : Dzięki React! Zarejestrowałem twórcę akcji w dyspozytorze, więc dyspozytor powinien zadbać o powiadomienie wszystkich sklepów, które się nim zajmują.

Dyspozytor : pokażę, komu zależy na uratowaniu kursu. Ach! Wygląda na to, że sklep zarejestrował u mnie oddzwonienie, więc dam jej znać.

Sklep : Hi dispatcher! Dziękuję za aktualizację! Zaktualizuję moje dane o przesłany ładunek. Następnie wyemituję wydarzenie dla komponentów React, które są dla nich ważne.

Reaguj : Ooo! Błyszczące nowe dane ze sklepu! Zaktualizuję interfejs, aby to odzwierciedlić!


Flux API


register (funkcja callback) - „Hej, dyspozytorze, uruchom mnie, gdy zdarzają się akcje. -Sklep"

unregister (id łańcucha) - „Hej, dyspozytorze, przestań się martwić o tę akcję. -Sklep"

waitFor (identyfikatory tablic) - „Najpierw zaktualizuj ten sklep. -Sklep"

dispatch (ładunek obiektu) - „Hej, dyspozytorze, powiedz sklepom o tej akcji. -Akcja"

isDispatching () - „Jestem teraz zajęty wysyłaniem wywołań zwrotnych.”

więc pytanie nasuwa się w naszym umyśle

Więc Flux jest modelem publikowania i subskrybowania?

Nie do końca.

Różni się na dwa sposoby:

1. Każdy ładunek jest wysyłany do wszystkich zarejestrowanych połączeń zwrotnych.

2. Połączenia zwrotne mogą czekać na inne połączenia zwrotne

Podsumowanie

Strumień jest wzorcem dla jednokierunkowego przepływu danych Akcje obudowują zdarzenia Dyspozytor jest centralnym centrum przechowującym wywołania zwrotne Sklepy przechowujące stan aplikacji Wiele implementacji

Dhaval Patel
źródło
Mój pierwszy problem jest to, że państwo umożliwia zastosowanie mają różne dane zdalnego podmiotów API: - /
mfrachet
co masz na myśli przez stan pozwala? wszędzie tam, gdzie wywoływana jest zmiana, nazywa się React View i ponownie zwana metodą zmiany stanu
Dhaval Patel
Przyznaję, że buduję aplikację z topnikiem. Mam do czynienia z interfejsem API, a następnie zapisuję dane w moich sklepach. Co się stanie, jeśli użytkownicy zmodyfikują zdalne dane? Będę miał różnicę między klientem a serwerem
mfrachet,
teraz gdzie mogę znaleźć dlaczego. Jeśli wszyscy dyspozytorzy i sklep zrobią to do przodu, zobacz, dlaczego nie można bezpośrednio zaktualizować widoku akcji. dlaczego są pośrednicy
Muhammad Umer
@MuhammadUmer: Dispatcher jest przeznaczony dla aplikacji, a sklep oparty jest na komponencie w aplikacji, więc w celu usunięcia redundancji wprowadzono pośredników
Dhaval Patel
1

Patrząc na prosty przykład ( https://github.com/facebook/flux/tree/master/examples/flux-todomvc/ ): „sklepy zarządzają stanem aplikacji dla określonej domeny w aplikacji.” Oznacza to, że zawierają dane o stanie aspektu aplikacji i cały kod do jej zmiany. Ilekroć pojawi się nowa aktualizacja od Dyspozytora, wszystkie Sklepy ją widzą, decydują, w jaki sposób zaktualizować swoje dane w odpowiedzi, a następnie powiadamiają Widoki o zmianie danych. W przykładach Sklepy zawierają takie rzeczy, jak „niewidoczna lista wątków” (gdzie Dyspozytor informuje ich o nadejściu nowej wiadomości lub przeczytaniu starej, a Widoki wyświetlają wątki wiadomości użytkownikowi) oraz „bieżący czas odtwarzania i stan."

Mówiąc bardziej technicznie: są to pośrednia warstwa struktury, która rejestruje wywołania zwrotne w programie Dispatcher w celu otrzymywania aktualizacji, a następnie powiadamia Widoki, gdy zmienia się stan danych. (Widoki mogą następnie wysyłać akcje z powrotem do Dyspozytora.) Zaimplementowano abstrakcyjny interfejs, w którym każdy Sklep rejestruje wywołanie zwrotne w Dyspozytorze i transmituje zdarzenia do Widoku, ale wydaje się, że każdy Sklep reprezentuje konkretną domenę w konkretny sposób. (Czy są kontrprzykłady?)

Davislor
źródło
0

Magazyny to obszary kodu, które przechowują stan aplikacji i złożoną logikę. Powodem jest to, że wiele widoków prawdopodobnie będzie używać tych samych danych, ale wyświetla je w inny sposób lub wyświetla niektóre, ale nie wszystkie dane dla określonej domeny. Na przykład użytkownik loguje się, a Ty otrzymujesz jego imię, nazwisko, adres e-mail, zdjęcie, miejscowość, numer adresu, numer telefonu itp. Informacje te są wyświetlane w osobnych widokach. Zamiast powielać dane między widokami, możemy użyć jednego sklepu o nazwie UserStore, który przechowuje dane dla użytkownika. Upraszcza to system, dając „jedno miejsce na zmianę”, ilekroć logika lub przechowywane dane muszą zostać zmienione. Istnieje wiele innych powodów, dla których warto korzystać ze Sklepu, ale to chyba najbardziej oczywisty.

kiwicomb123
źródło