Elm:
Lese kommandolinjeargumenter
Slik gjør du:
Elm er primært en språk for webapplikasjoner og det kjører i nettleseren, ikke direkte i terminalen. Men du kan bruke JavaScript interoperability, kjent som ports, for å bygge en Elm-applikasjon som kommuniserer med Node.js for å håndtere kommandolinjeargumenter:
port module Main exposing (..)
import Json.Decode as Decode
import Html
-- Definerer en port for å sende kommandolinjeargumentene til Elm fra JavaScript
port cmdArgs : (List String -> msg) -> Sub msg
-- Applikasjonsmodel
type alias Model =
{ args : List String }
-- Initialiserer modellen med en tom liste
init : Model
init =
{ args = [] }
-- Abonnerer på kommandolinjeargumenter
subscriptions : Model -> Sub msg
subscriptions model =
cmdArgs NewArgs
-- Oppdaterer modell med argumentene
type Msg
= NewArgs (List String)
update : Msg -> Model -> Model
update msg model =
case msg of
NewArgs args ->
{ model | args = args }
-- Viser argumentene
view : Model -> Html.Html Msg
view model =
Html.text (String.join ", " model.args)
-- Enkel Elm-hovedfunksjon
main : Program () Model Msg
main =
Html.program
{ init = (init, Cmd.none)
, view = view
, update = update
, subscriptions = subscriptions
}
For JavaScript-koden som interopererer med Elm og Node.js, kan du bruke noe som dette:
const { Elm } = require('./elm.js');
const app = Elm.Main.init();
// Sender kommandolinjeargumentene til Elm
const args = process.argv.slice(2);
app.ports.cmdArgs.send(args);
Dypdykk
Å lese kommandolinjeargumenter i Elm direkte er ikke mulig fordi Elm kjører i nettleseren. I tidlige stadier handlet Elm hovedsakelig om ren funksjonell programmering for frontend-utvikling. Den tradisjonelle måten å håndtere kommandolinjeargumenter på skrivebordet ville vært terminalbaserte språk som Python eller Bash.
Men med Elm og Node.js kan du omgå denne begrensningen. Ports i Elm tillater toveis kommunikasjon med JavaScript, som igjen kan håndtere kommandolinjeargumentene i Node.js. Dette er et kraftfullt mønster som lar Elm-applikasjoner dra nytte av Node.js’ server-side evner, inkludert lesing av kommandolinjeargumenter.
Et annet alternativ for å nå utenfor nettleseren med Elm har vært å bruke “elm-serverless”, som lar utviklere deploye Elm kode som serverless funksjoner på infrastrukturer som AWS Lambda. Dette gir en spennende blanding av funksjonell renhet og sky-muligheter.
Implementasjonsdetaljer innebærer vanligvis å bruke Node.js
sammen med Elm, hvor Node.js
håndterer kommandolinjen og Elm kjører webapplogikken. Elm-koden og Node.js-snippeten må kobles sammen med en port-definisjon som vet hvordan den skal oversette informasjonen mellom de to miljøene.
Se også
- Elm Ports dokumentasjon: https://guide.elm-lang.org/interop/ports.html
- Node.js prosessdokumentasjon: https://nodejs.org/api/process.html#process_process_argv
- “elm-serverless” for å lage serverless applikasjoner med Elm: https://www.elm-serverless.com/