Как я могу экспортировать журнал консоли win Elm?

#elm

#elm

Вопрос:

Экспортировать консоль сложно.журнал с помощью Elm.

Я хочу вывести журнал консоли, нажав кнопку, как показано ниже, и с помощью функции входа в консоль. Как мне это сделать?

 sampleView : Html Message
sampleView =
    Html.div (class "sample-card" :: Styles.sampleCard)
        [ Html.div
            (class "sample-card-list" :: Styles.sampleCardList)
            [
                Html.button
                    (class "sample-card-button" :: Styles.sampleCardListButton)
                    [
                        Html.text "サンプルボタン"
                    ]
            ]
        ]
  

Если я использую Javascript, я хочу сделать, как показано ниже.

 <button class="sample-card-button" onclick="btnClick();">サンプルボタン</button>

/* JavaScript 側 */
function btnClick() {
  console.log("クリックされました");
});
  

Комментарии:

1. Ведение журнала по своей сути сложно для чистого языка, такого как Elm. Если вы хотите вести журнал для целей отладки, ознакомьтесь с пакетом отладки , в частности с log функцией.

Ответ №1:

Если это просто для отладки, вы можете использовать Debug.log , но вы не можете использовать Debug модуль в производственном коде (запуск компилятора с --optimize не удастся скомпилировать, если у вас есть Debug обычаи). Его использование может выглядеть следующим образом:

 sampleView : Html Message
sampleView =
    Html.div (class "sample-card" :: Styles.sampleCard)
        [ Html.div
            (class "sample-card-list" :: Styles.sampleCardList)
            [
                Html.button
                    ([class "sample-card-button", onClick CardButtonClicked]    Styles.sampleCardListButton)
                    [
                        Html.text "サンプルボタン"
                    ]
            ]
        ]

update : Message -> Model -> ( Model, Cmd Message )
update msg model =
    case msg of
        CardButtonClicked ->
            let
                _ = Debug.log "クリックされました" msg
            in
            ( model, Cmd.none )
  

Если вы хотите выполнить запись в консоль в производственном приложении, вам потребуется использовать порт. Чтобы создать порт, вам нужно обновить модуль, в котором он находится, чтобы он был объявлен a port module (просто добавьте port в начало объявления модуля в первой строке файла).

 port module Main exposing (..)

port consoleLog : String -> Cmd msg

update : Message -> Model -> ( Model, Cmd Message )
update msg model =
    case msg of
        CardButtonClicked ->
            ( model, consoleLog "クリックされました" )
  

Затем вам нужно подключить некоторый JavaScript для обработки этого сообщения о переносе:

 var app = Elm.Main.init({ node: document.querySelector('main') })
app.ports.consoleLog.subscribe(function (msg) {
    console.log(msg);
});
  

Вот пример приложения, использующего порт для вызова console.log .