No es eso impresionante? Por supuesto que lo es -:)
Bueno...Elm comenzó a existir a mediados del 2012...así que es relativamente nuevo...lo cual significa que no hay muchos tutoriales y que yo sepa ningún libro...pero...no dejes que eso te asuste...existen un par de asombrosos cursos dictados por The Pragmatic Studio que te ayudarán a estar listo y preparado -;)
Elm: Building Reactive Web Apps
Elm: Signals, Mailboxes & Ports
Ahora...para instalar Elm...si ya tienes instalado NodeJS entonces simplemente puedes utilizar npm que es yo pienso la manera más rápida y sencilla...
sudo npm install elm
De lo contrario puedes ir a la sección de download para los instaladores o para el código fuente para compilarlo...pero debes tener en cuenta que para compilarlo vas a necesitar tener Haskell instalado también...
En todo caso...vamos a ver como crear una aplicación de List Fibonacci en Elm... -:)
Crea una carpeta y llamala "Fibonacci_App" y entra en la carpeta desde el terminal...
elm package install evancz/elm-html
elm package install evancz/start-app
El primer paquete nos va a permitir generar código HTML y el segundo va a hacer nuestras vidas más sencillas...
Ahora...abre tu editor favorito y copia y pega este código...
Fibonacci.elm |
---|
module Fibonacci where import Html exposing (..) import Html.Events exposing (..) import Html.Attributes exposing (..) import StartApp.Simple as StartApp import String exposing (toInt) --MODEL type alias Model = { number: String, fibonacci: String } initialModel: Model initialModel = { number = "", fibonacci = "" } --UPDATE parseInt : String -> Int parseInt string = case String.toInt string of Ok value -> value Err error -> 0 type Action = NoOp | Submit | UpdateNumber String update: Action -> Model -> Model update action model = case action of NoOp -> model UpdateNumber contents -> { model | number = contents } Submit -> { model | fibonacci = fib (parseInt model.number) 0 1, number = "" } fib: Int -> Int -> Int -> String fib num a b = if a > 0 && num > 1 then toString(a+b) ++ " " ++ fib (num-1) (a+b) a else if a == 0 then toString a ++ " " ++ toString b ++ " " ++ toString(a+b) ++ " " ++ fib(num-1) (a+b) b else "" --VIEW buttonStyle: Attribute buttonStyle = style [ ("outline", "none"), ("border", "none"), ("border-radius","4px"), ("margin-right","5px"), ("padding","4px 10px"), ("background","#61a1bc"), ("color","#fff") ] divStyle: Attribute divStyle = style [ ("margin", "50px auto"), ("padding", "0px 50px"), ("text-align", "center") ] pStyle: Attribute pStyle = style [ ("font-size", "30px") ] pageHeader : Html pageHeader = h1 [ ] [text "Fibonacci List"] view: Signal.Address Action -> Model -> Html view address model = div [ divStyle ] [ pageHeader, input [ type' "text", name "number", placeholder "Enter a number", value model.number, on "input" targetValue (\v -> Signal.message address (UpdateNumber v)) ] [ ], button [ buttonStyle, onClick address Submit ] [ text "Submit" ], p [ pStyle ] [ text (model.fibonacci) ] ] main: Signal Html main = StartApp.start { model = initialModel, view = view, update = update } |
Luego, solo debemos compilar nuestra aplicación -;)
elm make Fibonacci.elm --output Fibonaccci.html
Ahora, podemos abrir el archivo Fibonacci.html y probar nuestra aplicación -:D
Espero que le haya gustado -:) Y voy a tratar de tener mi aplicación de Números LED terminada pronto -;)
Saludos,
Blag.
Development Culture.
No comments:
Post a Comment