Habla sobre Elm .
Elm es un lenguaje de programación funcional para el desarrollo frontend. La sintaxis es similar a la de Haskell, pero significativamente simplificada y especializada. El código fuente de Elm se compila en JavaScript nativo. JavaScript compilado contiene código de aplicación que controla el subárbol DOM.
Olmo Cómodo e incómodo. Composición
Olmo Cómodo e incómodo. Json.Encoder y Json.Decoder
Olmo Cómodo e incómodo. Http, Tarea
El elemento principal en la arquitectura del lenguaje Elm es la aplicación. En general, cada aplicación contiene:
- Estado o modelo. Datos que describen el estado actual de la aplicación;
- Muchos mensajes válidos Los mensajes se envían cuando ocurren eventos (digamos que se hace clic en un botón) y se entregan a la función de actualización;
- Una función de vista que, según el estado, genera un nuevo árbol DOM;
- La función de actualización, que toma un modelo y un mensaje, y devuelve un nuevo modelo y los efectos requeridos;
- Función de suscripción, suscripción a notificaciones de eventos. En el núcleo del lenguaje hay suscripciones al temporizador, WebSocket y más.
Escribiendo
Todo debe ser mecanografiado. Como resultado, la comprobación de consistencia del código estático. Si se compila, debería funcionar. Pero funcionará como espera o no, sin garantías. Esto simplifica enormemente la refactorización.
Modelo
El modelo es un tipo personalizado. Los tipos personalizados se crean a partir de:
- Alias de tipo para describir estructuras;
- Tipos de unión para describir asociaciones de tipo válidas;
- tipos básicos Int, String y otros.
Los tipos de unión le permiten declarar tipos etiquetados. Por ejemplo, tome una descripción del tipo de usuario:
type User = Anonymous | User String
El tipo declarado contiene información sobre el tipo de usuario y sus datos, si está autorizado. De lo contrario, el usuario es anónimo.
La frontera
El límite entre el tiempo de ejecución de Elm y el entorno externo a través de decodificadores. Decoder (Json.Decode) es una función que acepta JSON y devuelve un tipo Elm. Durante la ejecución de Json.Decode.decodeString o Json.Decode.decodeValue , se verifica la estructura de los datos de entrada y la correspondencia con los tipos.
El decodificador devuelve un tipo de resultado que contiene datos, si tiene éxito, o un error.
Vista
Una vista es una función de estado que devuelve información para generar un árbol DOM. Un ejemplo:
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) ]
Las funciones se utilizan para generar nodos DOM. En proyectos de combate, la vista es una composición de funciones de un orden más general. Por ejemplo:
view : Model -> Html.Html Msg view model = case model.user of Anonymous -> anonymousView User name -> userView name
anonymousView y userView son funciones de usuario que generan pequeñas partes de la interfaz.
Mutaciones (actualización)
Todos los eventos (acciones del usuario, red, etc.) generan mensajes que se entregan a la función registrada durante la inicialización. Por defecto, esta función se denomina actualización. La función toma un evento y un modelo, y devuelve un nuevo modelo y comandos. Los comandos se ejecutan en tiempo de ejecución de Elm y también pueden generar eventos.
Por ejemplo, incrementar una variable cuando se presiona un botón:
update : Model -> Msg -> (Model, Cmd Msg) update model msg = case msg of OnClick -> ({model | clicked = model.clicked + 1}, Cmd.none)
Suscribete
La suscripción a eventos ocurre al inicio de la aplicación y se vuelve a llamar cada vez que se cambia el modelo.
Si se produce un evento, se entregan a la función de actualización.
Por ejemplo, una suscripción a un temporizador con un período de 10 segundos. Cuando se alcanzan los 10 segundos, se genera un mensaje Tick y se entrega a la función de actualización:
subscribe : Model -> Sub Msg subscribe model = Time.every 10 Tick
Fuentes