Elm-메시지

메시지는 Elm 아키텍처의 구성 요소입니다. 이러한 구성 요소는 사용자와 애플리케이션 인터페이스의 상호 작용에 대한 응답으로 View에서 생성됩니다. 메시지는 응용 프로그램의 상태를 변경하라는 사용자 요청을 나타냅니다.

통사론

--Message Syntax
type Message = some_message1 |some_message2 ...|some_messageN

삽화

다음 예는 간단한 카운터 응용 프로그램입니다. 응용 프로그램은 사용자가 각각 추가 및 빼기 버튼을 클릭 할 때 변수 값을 1 씩 증가 및 감소시킵니다.

응용 프로그램에는 4 개의 구성 요소가 있습니다. 구성 요소는 아래에 설명되어 있습니다.

메시지

이 예의 메시지는 다음과 같습니다.

type Message = Add | Subtract

모델

모델은 애플리케이션의 상태를 나타냅니다. 카운터 애플리케이션에서 모델 정의는 다음과 같습니다. 카운터의 초기 상태는 0이됩니다.

model = 0

전망

보기는 애플리케이션의 시각적 요소를 나타냅니다. 보기에는 두 개의 버튼 (+)과 (-)가 있습니다. 사용자가 각각 + 및-버튼을 클릭하면보기에서 추가 및 빼기 메시지가 생성됩니다. 그러면 모델의 수정 된 값이보기에 표시됩니다.

view model =
-- invoke text function
h1[]
[   div[] [text "CounterApp from TutorialsPoint" ]
   ,button[onClick Subtract] [text "-"]
   ,div[][text (toString model)]
   ,button[onClick Add] [text "+"]
]

최신 정보

이 구성 요소에는보기에서 생성 된 각 메시지에 대해 실행해야하는 코드가 포함되어 있습니다. 이것은 아래 예에 나와 있습니다.

update msg model =
case msg of
Add -> model+1
Subtract -> model-1

함께 모아서

Step 1MessagesApp 폴더를 만들고 MessagesDemo.elm 파일을 만듭니다.

Step 2 − elm 파일에 다음 코드 추가 −

import Html exposing (..)
import Html.Events exposing(onClick)

model = 0 -- Defining the Model

--Defining the View

view model =
   h1[]
   [  div[] [text "CounterApp from TutorialsPoint" ]
      ,button[onClick Subtract] [text "-"]
      ,div[][text (toString model)]
      ,button[onClick Add] [text "+"]
   ]

--Defining the Messages

type Message = Add | Subtract

--Defining Update

update msg model =
case msg of
   Add -> model+1
   Subtract -> model-1

-- Define the main method
main =
   beginnerProgram
   {
      model=model
      ,view=view
      ,update=update
   }

Step 3 − 실행 elm make command터미널에서. 그만큼elm make command 코드를 컴파일하고 위에서 만든 .elm 파일에서 HTML 파일을 생성합니다.

C:\Users\dell\elm\MessagesApp> elm make .\MessageDemo.elm
Some new packages are needed. Here is the upgrade plan.

   Install:
      elm-lang/core 5.1.1
      elm-lang/html 2.0.0
      elm-lang/virtual-dom 2.0.4

Do you approve of this plan? [Y/n] y
Starting downloads...

   ΓùÅ elm-lang/html 2.0.0
   ΓùÅ elm-lang/virtual-dom 2.0.4

ΓùÅ elm-lang/core 5.1.1
Packages configured successfully!
Success! Compiled 38 modules.
Successfully generated index.html

Step 4 − 열기 index.html 다음과 같이 작동하는지 확인하십시오.