8. - Oszczędza zasobożerne operacje
na DOM
- Drzewo elementów może być
renderowane bez przeglądarki
- React
- Mithril
- virtual-dom (np. w Mercury)
VIRTUAL DOM
http://calendar.perfplanet.com/2013/diff/
VIRTUAL DOM
9. - Natywnie
- Shadow DOM
- Importy HTML
- Własne elementy
- Podejścia
- Polymer
- React
- Angular 2
www.webcomponents.org
WEB COMPONENTS
WEB COMPONENTS
10. - Tylko WIDOK
- Szybko rozwijana technologia
- Reużywalność komponentów
KILKA SŁÓW O REACT
REACT
11. - Korzystamy z realnych danych
- Nie zajmujemy się stylami
- Zaczniemy od widoków
- Przeniesiemy dane jako stan aplikacji
REZULTAT WARSZTATÓW
APLIKACJA
12. - Jak stworzyć komponent
- Podstawy JSX
- DX Reacta
- Jak przekazać propsy do komponentu
PIERWSZY KOMPONENT
APLIKACJA (REACT) - KROK 1
13. - Jak stworzyć komponent dla każdego elementu tablicy
- Jak React optymalizuje tablice obiektów
LISTA ELEMENTÓW, PSEUDO-PĘTLE
APLIKACJA (REACT) - KROK 2
14. - Jak działa stan komponentu
- Jak podpiąć interwały, zaktualizować DOM
- Cykl życia komponentu
DYNAMICZNY KOMPONENT - ZEGAR
APLIKACJA (REACT) - KROK 3
15. - Użyjemy React dla SVG
- Pokażemy incydenty na osi czasu
SVG TIMELINE
APLIKACJA (REACT) - KROK 4
16. - Nasłuchiwanie na zdarzenia DOMu w React
INTERAKCJA Z UŻYTKOWNIKIEM
APLIKACJA (REACT) - KROK 5
17. - Jak używać dodatku React Perf
- Cykl życia komponentu
OPTYMALIZACJA KOMPONENTÓW
APLIKACJA (REACT) - KROK 6
18. - Wysyłamy wiadomość (zwyczajny łańcuch znaków) i wyświetlamy listę wiadomości
- Są przygotowane style dla chatu:
- .chat - główny blok chatu
- .chat__messages - lista wiadomości
- .chat__messages > li - wiadomość
- .chat__messages > li > strong - nazwa użytkownika
- .chat__form - formularz do wysyłania wiadomości, a w środku button i input
ZADANIE - CHAT
APLIKACJA (REDUX) - KROK 7
19. - Jedna z implementacji Flux
- Uni-directional flow
- Jeden stan dla całej aplikacji
REDUX
REDUX
20. - Jednokierunkowy przepływ danych zapewnia kolejność działań
- Przy takim samym stanie aplikacji zadziała ona tak samo
UNI-DIRECTIONAL FLOW
REDUX
Actions Reducers Store View
subscribe
dispatch
Any other
data sources
dispatch
21. - Definiują informację która jest potrzebna do wykonania danej akcji
- Jedyną obowiązkową informacją jest type nazwa akcji
- Action creators budują akcję na podstawie parametrów
AKCJE
REDUX
Actions Reducers Store View
subscribe
dispatch
{
type: 'new incident',
incident: {
playtime: 6000,
name: 'goal',
team: 'home'
}
}
22. - Wykonują akcję zmieniając stan całej aplikacji
- Po zmianie stanu dobrą praktyką jest stworzenie nowego obiektu ze stanem aplikacji
REDUKTORY (REDUCERS)
REDUX
Actions Reducers Store View
subscribe
dispatch
function (state, action) {
if (action.type === 'add incident') {
return {
...state,
incidents: state.incidents.concat(action.incident)
}
}
return state
}
23. - Centralny punkt danych
- Pozwala na redukcję danych, subskrypcję do zmian i wykonywanie akcji
STORE
REDUX
Actions Reducers Store View
subscribe
dispatch
store = createStore(function (action, state) {
console.log('Action', action.type, 'executed')
return state
}, {})
store.dispatch({ type: 'match received' })
24. - Stworzyliśmy store w którym przechowamy incydenty
- Ręcznie wykonamy akcję i zobaczymy jak działa Redux DevTools
TWORZENIE STORE’A
APLIKACJA (REDUX) - KROK 8
Actions Reducers Store View
subscribe
dispatch
25. - Napisaliśmy kreator akcji i reduktor związane z incydentami
- Ręcznie wykonujemy akcję i sprawdzamy stan aplikacji
ACTION CREATOR I REDUCER
APLIKACJA (REDUX) - KROK 9
Actions Reducers Store View
subscribe
dispatch
26. - Korzystając z react-redux połączymy nasze komponenty z Reduxem
- Połączymy się z serwerem z danymi za pomocą WebSocketów
- Wyświetlimy informacje o meczu
POŁĄCZENIE Z WIDOKIEM!
APLIKACJA (REDUX) - KROK 10
Actions Reducers Store View
subscribe
dispatch
27. - Wysyłamy anonimową wiadomość do użytkowników i wyświetlamy odebrane
- Przez WebSocket jest udostępniony event message, który dostarcza wiadomość, a
emitować nowe wiadomości można tym samym eventem. Wiadomość jest zwyczajnym
łańcuchem znaków.
ZADANIE - CHAT MIĘDZY UŻYTKOWNIKAMI
APLIKACJA (REDUX) - KROK 11
Actions Reducers Store View
subscribe
dispatch