Elm:
Читання аргументів командного рядка
Як це зробити:
-- Elm не має вбудованої підтримки для читання аргументів командного рядка.
-- Однак, ви можете використовувати JavaScript через порти для отримання цих даних.
-- Давайте налаштуємо простий приклад.
port module Main exposing (..)
import Json.Decode as Decode
import Html
-- Оголошуємо порт для отримання аргументів.
port cmdlineArgs : (String -> msg) -> Sub msg
-- Тип повідомлення для вашого прикладу.
type Msg
= CmdArgs String
-- Основна програма.
main =
Html.program
{ init = init
, view = view
, update = update
, subscriptions = subscriptions
}
-- Початковий стан.
init : (Model, Cmd Msg)
init =
("Ніяких аргументів ще не отримано", Cmd.none)
-- Передплати.
subscriptions : Model -> Sub Msg
subscriptions model =
cmdlineArgs CmdArgs
-- Представлення.
view : Model -> Html.Html Msg
view model =
Html.text model
-- Оновлення.
update : Msg -> Model -> (Model, Cmd Msg)
update (CmdArgs args) _ =
(args, Cmd.none)
-- Модель.
type alias Model =
String
-- Запуск цього коду буде потребувати JavaScript коду, щоб відправити аргументи через порти.
В глибину
Elm фокусується на безпечних веб-додатках, тому немає інтегрованого способу доступу до аргументів командного рядка, як це можливо в мовах, орієнтованих на загальні завдання. Звичайно для читання аргументів командного рядка використовуються скриптові мови як Python або Node.js, а Elm використовується для роботи на боці клієнта і маніпуляції DOM. Коли вам потрібно працювати з командним рядком, можна застосовувати Elm через порти, що дозволяють двосторонню інтеграцію з JavaScript.
Також гляньте
- Elm Port Example - як працювати з портами.
- JSON Decode - документація про декодування JSON у Elm.
- Node.js Process Arguments - для роботи з аргументами командного рядка в Node.js, якщо ви хочете інтегрувати з Elm через порти.