Elm:
Opprette en midlertidig fil
How to:
Elm kjører i nettleseren og har ikke direkte tilgang til filsystemet, så eksemplene vi vanligvis snakker om for å lage midlertidige filer er ikke relevant. Men vi kan se på hvordan du kan håndtere midlertidige data i Elm ved hjelp av Web Storage API
emulering:
module Main exposing (..)
import Browser
import Html exposing (Html, button, div, text)
import Html.Events exposing (onClick)
import Json.Decode exposing (Value)
import Ports exposing (setTempData, getTempData)
-- MAIN
main =
Browser.element
{ init = init
, view = view
, update = update
, subscriptions = \_ -> Sub.none
}
-- MODEL
type alias Model =
{ tempData : Maybe String
}
init : () -> (Model, Cmd Msg)
init _ =
(Model Nothing, getTempData)
-- UPDATE
type Msg
= SetTemp
| GetTemp Value
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
SetTemp ->
(model, setTempData "Dette er midlertidig data.")
GetTemp value ->
( { model | tempData = Just (Json.Decode.decodeValue Json.Decode.string value |> Result.withDefault "Ingen data") }
, Cmd.none
)
-- VIEW
view : Model -> Html Msg
view model =
div []
[ button [ onClick SetTemp ] [ text "Lagre midlertidig data" ]
, button [ onClick (GetTemp "") ] [ text "Hent midlertidig data" ]
, case model.tempData of
Just data -> text ("Midlertidig data: " ++ data)
Nothing -> text "Ingen lagret midlertidig data"
]
Deep Dive
I Elm, som er designet for frontend-utvikling, er direkte skriving til filsystemet ikke innebygget fordi nettleseren vanligvis håndterer filtilganger av sikkerhetshensyn. Tradisjonelt sett, i server-side programmering eller skrivebordsapplikasjoner i språk som C, Java eller Python, er opprettelse av midlertidige filer en integrert del for various oppgaver som bufferhåndtering, dataoverføring mellom prosesser og som et transaksjonsmiddel ved databaseoperasjoner.
Alternativene til midlertidige filer i Elm kan være å bruke webteknologier som Web Storage API
(Local Storage and Session Storage), IndexedDB
, eller server-side lagringsløsninger som REST API-er og databaser som mellommenn for lagring av data.
Implementeringsdetaljer vil variere avhengig av behov og miljø. Web Storage API
fungerer ved å lagre nøkkel-verdipar i nettleseren og er godt egnet for enkle lagringsoppgaver.
See Also
- Elm language guide for interop: https://guide.elm-lang.org/interop
- MDN Web Docs om Web Storage API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API
- Elm discourse community: https://discourse.elm-lang.org/