To żyje! Elm w akcji.
Kolejny odcinek zmagań z Elmem przed nami. Dziś timer ożyje. Będziemy mieć okazję zobaczyć jak wygląda architektura aplikacji w Elmie i czemu może się Wam wydawać znajoma. Let’s start!
W poprzednim wpisie pokazałam jak, za pomocą Elma, możemy wyrenderować kilka divów. Ale od kilku DOM elementów do pełnej aplikacji jeszcze daleko. Dziś nadamy timerowi trochę ram i obsłużymy pierwsze kliknięcia. Na razie nie poświęcałam zbędnego czasu na stylowanie, więc wybaczcie wizualne koszmarki. Na rozprawienie się z nimi też przyjdzie pora.
Swoje poszukiwania na temat “Jak wygląda aplikacja w Elmie?” zaczęłam od tutoriala. Lecz nie jest on zbyt obszerny i szybko przestał mi wystarczać. Dużo więcej zrozumiałam przeglądając kod przykładowej appki - tutaj. Nie wiem jak inni, ale ja na przykładach uczę się najwięcej.
Chcąc, by aplikacja ożyła dodałam do niej możliwość ustawienia liczby minut, od której mamy odliczać. Na razie użyłam do tego stringów, ale z pewnością szybko się to zmieni.
Jeśli chodzi o podstawowe części składowe architektury elmowej aplikacji to mamy tutaj:
- model: jest to stan naszej aplikacji. Dodatkowo obok niego definiujemy również funkcję init, która zwraca stan, od którego aplikacja zacznie swoje działanie
1 | type alias Model = |
- messages: wiadomości sygnalizują zdarzenia, które mają miejsce w naszej aplikacji
1 | type Msg |
- view: widok renderujemy na podstawie stanu naszej aplikacji (w tym przypadku przekazuje stan do komponentu
timer
)
1 | view : Model -> Html Msg |
- update: mamy również funkcję, która jest wywoływana przez program, przy każdym pojawieniu się wiadomości. Modyfikuje ona stan aplikacji i może zwracać commandy (o nich kiedy indziej)
1 | update : Msg -> Model -> ( Model, Cmd Msg ) |
- subskrypcje: za ich pomocą nasłuchujemy na zewnętrze wejście (np. ruchy myszką), na razie z nich nie korzystałam
Potrzebujemy również program
, który zbiera wszystkie te elementy i sprawia, że nasza aplikacja ożywa.
Pełne źródła można oczywiście znaleźć na githubie.
Dla Was pozostawiam zagadkę. Co przypomina Wam taka struktura aplikacji? Podobieństwo do dużo bardziej popularnej obecnie technologii jest uderzające. Dajcie znać w komentarzu co myślicie.
Ania