Elm:
Pisanie pliku tekstowego

Jak to zrobić:

Ponieważ Elm działa w przeglądarce i jest zaprojektowany jako język programowania bez efektów ubocznych, nie ma bezpośredniego dostępu do systemu plików. Dlatego zapisywanie do pliku zwykle wiąże się z wysłaniem danych do JavaScript przez porty. Oto jak możesz to skonfigurować:

  1. Zdefiniuj moduł portu do wysyłania tekstu do JavaScriptu:
port module Main exposing (main)

import Browser
import Html exposing (Html, button, div, text)
import Html.Events exposing (onClick)

-- Zdefiniuj port do wysyłania danych tekstowych do JavaScriptu
port saveText : String -> Cmd msg

-- Główny widok
view : Html msg
view =
    div []
        [ button [ onClick (saveText "Cześć, Elm zapisuje do pliku!") ] [ text "Zapisz do pliku" ]
        ]

-- Ustawienie subskrypcji (nieużywane w tym przykładzie, ale wymagane dla modułu portu)
subscriptions : model -> Sub msg
subscriptions _ =
    Sub.none

-- Ustawienie aplikacji
main : Program () model msg
main =
    Browser.element
        { init = \_ -> ((), Cmd.none)
        , view = \_ -> view
        , update = \_ _ -> ((), Cmd.none)
        , subscriptions = subscriptions
        }
  1. Zaimplementuj odpowiadający kod JavaScript:

W pliku HTML lub module JavaScript obsłuż port aplikacji Elm do zapisywania tekstu. Możesz użyć biblioteki FileSaver.js do zapisywania pliku po stronie klienta lub wysłać dane na serwer do przetworzenia.

// Zakładając, że Elm.Main.init() został już wywołany i aplikacja działa
app.ports.saveText.subscribe(function(text) {
    // Użycie FileSaver.js do zapisywania plików po stronie klienta
    var blob = new Blob([text], {type: "text/plain;charset=utf-8"});
    saveAs(blob, "przyklad.txt");
});

Przykładowe wyjście nie jest bezpośrednio stosowalne, ponieważ wynikiem jest utworzenie pliku, ale po kliknięciu przycisku w twojej aplikacji Elm, na twoim komputerze powinien zostać pobrany plik o nazwie “przyklad.txt” zawierający ciąg “Cześć, Elm zapisuje do pliku!”.

W tym podejściu komunikacja między Elm a JavaScriptem jest kluczowa. Chociaż Elm ma na celu zawarcie jak największej części logiki twojej aplikacji, współpraca z JavaScriptem przez porty umożliwia wykonywanie zadań, takich jak zapisywanie do pliku, których Elm bezpośrednio nie obsługuje. Pamiętaj, że czystość i bezpieczeństwo Elma są wzmacniane przez ten wzorzec, co zapewnia, że twoje aplikacje Elm pozostają łatwe do utrzymania i zrozumienia, nawet kiedy wchodzą w interakcję ze skomplikowanym światem zewnętrznym.