web oraz aplikacji mobilnej • Dane powinny być dostępne po protokole HTTP (usługi REST) • Dane serwowane z: • API UM Warszawa • Dane tele-adresowe urzędów • Ew. dostęp do danych historycznych
javascriptowych • Pozawala tworzyć aplikacje jako kompozycje składającą się z niewielkich komponentów • Bazuje na „Virtual DOM” • Implementuje jednokierunkowy przepływ danych (FLux) • JSX - rozszerzenie składni JavaScript • Każda aplikacja posiada jeden komponent główny
wymaga konfiguracji na serwerze • browserHistory – wykorzystuje API historii wbudowane w przeglądarkę, adresy wyglądają standardowo • createMemoryHistory – działa w pamięci, nie zmienia adresu przeglądarki https://hackibmserver.mybluemix.net/#/cases
do komponentów prezentacyjnych, lub innych kontenerów Znaczniki • HTMLowe tylko do opakowania • Nie zawiera styli (ani inline, ani importowanych) Wie jak pobrać dane • Wie jak obsłużyć zdarzenia • Może posiadać swój wewnętrzny stan •
informację o stylach ( • inline, lub importując zewnętrzne arkusze) Ma bardziej rozbudowany JSX • W metodzie • render może zawierać odwołania do innych komponentów prezentacyjnych, lub kontenerów Nie zawiera żadnej logiki • Zwykle nie zawiera własnego wewnętrznego stanu •
components would be stateless functions because in the future we’ll also be able to make performance optimizations specific to these components by avoiding unnecessary checks and memory allocations. This is the recommended pattern, when possible.” Źródło: https://facebook.github.io/react/docs/components-and-props.html
zależny od elementów widoku W • wielu frameworkach jest nawet tworzony przez widok (np. Angular) Odpowiedzialny • zarówno za obsługę zdarzeń jak i logikę biznesową (!= Single Responsibility) Massive View Controller • Synchronizacja wielu elementów • widoku Źródło: https://medium.freecodecamp.com/is-mvc-dead-for-the-frontend-35b4d1fe39ec
aplikacji jest przechowywane w jednym obiekcie stanu: ‘State’ lub ‘StateTree’ State jest read • -only – nie można go bezpośrednio modyfikować. Zawsze wymagana jest akcja: ‘Action’ (type) Zmiany • w aplikacji opisane jako funkcje (prevState, action) -> newState (‘Reducer’) – testowalność!
od Facebook’a dla aplikacji web • Redux – biblioteka, zawierająca lekką implementację dla web • Model View Intent – dla web i Android • ReSwift – implementacja bazująca na Redux dla iOS • …Relay – bardzo rozbudowana biblioteka dla web