Elm:
Korzystanie z debugera

Jak to zrobić:

Elm nie posiada wbudowanego debugera w tradycyjnym sensie, w jaki ma to miejsce np. w JavaScript z narzędziami deweloperskimi przeglądarki. Jednakże społeczność Elm stworzyła narzędzia wypełniające tę lukę. Oto jak możesz użyć elm-debug-transformer do debugowania twojej aplikacji Elm:

-- Zainstaluj elm-debug-transformer (pakiet Node)

1. npm install -g elm-debug-transformer

-- Użyj elm-debug-transformer do uruchomienia twojej aplikacji

2. elm-debug-transformer --port=8000 yourMainElmFile.elm 

Gdy elm-debug-transformer jest uruchomiony, tworzy połączenie WebSocket do logowania. Zobaczysz informacje dotyczące debugowania w konsoli twojej przeglądarki, gdzie możesz inspekcjonować struktury danych twojego programu w danych punktach twojej aplikacji.

W Elm 0.19 i późniejszych, funkcje modułu Debug takie jak Debug.log i Debug.todo mogą pomóc ci śledzić wartości i celowo oznaczać nieukończone części twojego kodu. Oto jak używać Debug.log:

import Debug

update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
    case msg of
        Increment ->
            ( Debug.log "Zwiększam" { model | count = model.count + 1 }, Cmd.none )

        Decrement ->
            ( Debug.log "Zmniejszam" { model | count = model.count - 1 }, Cmd.none )

Zobaczysz w konsoli twojej przeglądarki wiadomości “Zwiększam” lub “Zmniejszam” wraz z nowym stanem modelu.

Dogłębna analiza

Autor Elm, Evan Czaplicki, miał na celu stworzenie języka, w którym częste błędy byłyby niemożliwe do popełnienia lub łatwe do wykrycia. Ta filozofia jest powodem, dla którego rdzeń Elm nie zawiera tradycyjnych funkcji debugowania. Statyczna analiza i wnioskowanie typów w Elm znacząco przyczyniają się do redukcji błędów w czasie wykonania, co zmniejsza potrzebę zaawansowanego debugowania w czasie wykonania. Historyczne alternatywy obejmowały użycie obecnie przestarzałego elm-reactor, który oferował debugowanie z cofaniem czasu – sposób na przewijanie wstecz i odtwarzanie akcji w twojej aplikacji.

Dziś narzędzia takie jak elm-debug-transformer i użycie modułu Debug Elm pomagają zapełnić tę lukę. Chociaż moduł Debug jest przeznaczony do użycia tylko w trakcie rozwoju i powinien zostać usunięty przed budowaniem wersji produkcyjnych, jest nieocenionym narzędziem do wskazywania i logowania zmian stanu.

Należy pamiętać, że tradycyjne techniki debugowania JavaScript, takie jak punkty przerwania czy wykonanie krok po kroku, nie są bezpośrednio stosowalne w Elm ze względu na jego architekturę i obsługę aktualizacji stanu przez środowisko wykonawcze Elm. Elm zachęca do strukturowania programu w taki sposób, aby przepływ danych był jasny i zgodny z rygorystycznymi typami oraz gwarancjami niemutowalności, minimalizując przypadki, gdy potrzebne jest debugowanie.

Zobacz też