Läsa in kommandoradsargument

Elm:
Läsa in kommandoradsargument

How to:

Elm är designat för webbprogram och saknar direkt tillgång till kommandoradsargument som server-sidans språk har. Men vi kan emulera en interaktion med nedanstående exempel.

Först, installera elm och skapa ett nytt projekt:

npm install -g elm
elm init my-project
cd my-project

Lägg till en fil index.html som laddar ditt Elm-program:

<!DOCTYPE html>
<html>
<head>
  <title>Elm Command Line Arguments</title>
  <script src="elm.js"></script>
</head>
<body>
  <script>
    Elm.Main.init({ flags: "Din initiala data här" });
  </script>
</body>
</html>

Och här är Main.elm, där vi hanterar “argumentet”:

module Main exposing (..)

import Browser
import Html exposing (text)

type alias Model = String

init : String -> (Model, Cmd msg)
init flags =
    (flags, Cmd.none)

type Msg = NoOp

update : Msg -> Model -> (Model, Cmd Msg)
update _ model =
    (model, Cmd.none)

view : Model -> Html msg
view model =
    text ("Kommandoradsargumentet var: " ++ model)

main =
    Browser.element
        { init = init
        , view = view
        , update = update
        , subscriptions = \_ -> Sub.none
        }

Kompilera Elm till JavaScript:

elm make src/Main.elm --output=elm.js

Öppna nu index.html i webbläsaren. Du ser texten: “Kommandoradsargumentet var: Din initiala data här”.

Deep Dive

Elm är ett funktionellt språk skapat för webbutveckling, särskilt för främjsidesapplikationer, där kommandoradsargument inte är applicerbart direkt som i server-side språk som Python eller Node.js. Tidigare språk som Haskell och F# har inspirerat Elms syntax och funktionell stil, men Elm fokuserar mer på webben än allmän systemprogrammering.

Alternativ för att hantera extern input kan inkludera att ta emot argument via webbadresser (URLs) eller genom en webbtjänst där Elmapplikationen kan hämta data vid körning.

För en regelrätt interaktion med systemkommandon och för att läsa kommandoradsargument direkt, överväg att använda Node.js med Elm, eller ett annat backend-språk som kan kommunicera med din Elm-klient.

See Also