Elm. Confortável e desajeitado

Fale sobre Elm .


Elm é uma linguagem de programação funcional para o desenvolvimento de front-end. A sintaxe é semelhante ao Haskell, mas significativamente simplificada e especializada. O código-fonte do olmo é compilado no JavaScript nativo. O JavaScript compilado contém o código do aplicativo que controla a subárvore DOM.


Elm. Confortável e estranho. Composição:
Elm. Confortável e estranho. Json.Encoder e Json.Decoder
Elm. Confortável e estranho. Http, Tarefa


O elemento principal na arquitetura da linguagem Elm é o aplicativo. Em geral, cada aplicativo contém:


  1. Estado ou modelo. Dados que descrevem o estado atual do aplicativo;
  2. Muitas mensagens válidas. As mensagens são enviadas quando ocorrem eventos (digamos que um botão é clicado) e entregues à função de atualização;
  3. Uma função de visualização que, com base no estado, gera uma nova árvore DOM;
  4. A função de atualização, que pega um modelo e uma mensagem e retorna um novo modelo e os efeitos necessários;
  5. Função de inscrição, inscrição em notificações de eventos. No núcleo do idioma, há assinaturas para o timer, WebSocket e muito mais.

Digitação


Tudo deve ser digitado. Como resultado, verificação de consistência do código estático. Se compilado, deve funcionar. Mas funcionará como você espera ou não - sem garantias. Isso simplifica bastante a refatoração.


Modelo


O modelo é um tipo personalizado. Tipos personalizados são criados a partir de:


  1. Aliases de tipo para descrever estruturas;
  2. Tipos de união para descrever associações de tipos válidas;
  3. tipos básicos Int, String e outros.

Tipos de união permitem que você declare tipos marcados. Por exemplo, considere uma descrição do tipo de usuário:


type User = Anonymous | User String 

O tipo declarado contém informações sobre o tipo de usuário e seus dados, se ele estiver autorizado. Caso contrário, o usuário é anônimo.


A fronteira


A fronteira entre o tempo de execução Elm e o ambiente externo através de decodificadores. Decoder (Json.Decode) é uma função que aceita JSON e retorna um tipo de Elm. Durante a execução de Json.Decode.decodeString ou Json.Decode.decodeValue , a estrutura dos dados de entrada e a correspondência com os tipos são verificadas.


O decodificador retorna um tipo de resultado que contém dados, se bem-sucedidos, ou um erro.


Ver


Uma visão é uma função do estado que retorna informações para gerar uma árvore DOM. Um exemplo:


 view : Model -> Html.Html Msg view model = case model.user of Anonymous -> Html.div [] [ Html.text “Anonymous” ] User name -> Html.div [] [ Html.text (“Welcome ” ++ name) ] 

Funções são usadas para gerar nós DOM. Em projetos de combate, a visão é uma composição de funções de uma ordem mais geral. Por exemplo:


 view : Model -> Html.Html Msg view model = case model.user of Anonymous -> anonymousView User name -> userView name 

anonymousView e userView são funções de usuário que geram pequenas partes da interface.


Mutações (atualização)


Todos os eventos (ações do usuário, rede etc.) geram mensagens entregues à função registrada durante a inicialização. Por padrão, essa função é chamada de atualização. A função pega um evento e um modelo e retorna um novo modelo e comandos. Os comandos são executados no tempo de execução Elm e também podem gerar eventos.


Por exemplo, incrementando uma variável quando um botão é pressionado:


 update : Model -> Msg -> (Model, Cmd Msg) update model msg = case msg of OnClick -> ({model | clicked = model.clicked + 1}, Cmd.none) 

Inscrever-se


A assinatura de eventos ocorre na inicialização do aplicativo e é chamada novamente toda vez que o modelo é alterado.


Se um evento ocorrer, eles serão entregues à função de atualização.


Por exemplo, uma assinatura de um cronômetro com um período de 10 segundos. Ao atingir 10 segundos, uma mensagem Tick é gerada e entregue à função de atualização:


 subscribe : Model -> Sub Msg subscribe model = Time.every 10 Tick 

Fontes


Source: https://habr.com/ru/post/pt424215/


All Articles