Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ClojureScript

 ClojureScript

Aleš Roubíček

May 22, 2018
Tweet

More Decks by Aleš Roubíček

Other Decks in Programming

Transcript

  1. ClojureScript
    @alesroubicek
    #jsDevMeetup

    View full-size slide

  2. Clojure
    • dynamické vývojové prostředí
    • datově orientovaný jazyk
    • Simple by Design
    • Lisp on JVM
    • od začátku zamýšlená jako hostovaný jazyk
    • prvotřídní interop s hostitelskou platformou

    View full-size slide

  3. EDN Typy
    string "foo"
    character \f
    integer 42, 42N
    floating point 3.14, 3.14M
    boolean true, false
    nil nil
    symbol foo, +
    keyword :foo, 9:foo

    View full-size slide

  4. EDN Datové struktury
    list sequential (1 2 3)
    vector sequential, random access [1 2 3]
    map associative {:a 1 :b 2}
    set membership #{:a :b :c}

    View full-size slide

  5. Funkce
    (println "Hello #jsDevMeetup!")

    View full-size slide

  6. Funkce
    (println "Hello #jsDevMeetup!")
    volání funkce parametr

    View full-size slide

  7. Funkce
    (println "Hello #jsDevMeetup!")
    list
    symbol string

    View full-size slide

  8. Definice funkce
    (defn greet
    "Returns a friendly greeting"
    [your-name]
    (str "Hello, " your-name))

    View full-size slide

  9. Definice funkce
    (defn greet
    "Returns a friendly greeting"
    [your-name]
    (str "Hello, " your-name))
    function name
    doc string
    parameters
    function body

    View full-size slide

  10. A dál?
    • klíčová slova
    • operátory
    • speciální výrazy
    • direktivy preprocesoru

    View full-size slide

  11. A dál?
    • klíčová slova
    • operátory
    • speciální výrazy
    • direktivy preprocesoru
    Zbytečný

    View full-size slide

  12. –Rich Hickey
    “Clojure is a small language,
    and intends to remain so”

    View full-size slide

  13. ClojureScript

    View full-size slide

  14. ClojureScript
    • Dialekt Clojure
    • Cílí na všechna moderní JS prostředí
    • BCL
    • Google Closure Library
    • cljs.core
    • cljs.test
    • cljs.string
    • Google Closure Compile (gcc)

    View full-size slide

  15. REPL Driven Development
    • interaktivní vývoj
    • rychlá zpětná vazba
    • nástroje
    • cljs.main
    • lumo
    • lein figwheel

    View full-size slide

  16. qlkit
    • univerzální (client/server) wrapper React.js
    • stejná syntaxe pro markup a dotazovaní dat
    • komponenty určují, jaká data v jakém tvaru
    potřebují

    View full-size slide

  17. core.async
    • Implementace CSP a Go kanálů jako knihovna
    • psaní async a paralelních procesů lineárním stylem
    • základní kámen pro tvorbu robustních systémů

    View full-size slide

  18. transit
    • knihovna pro přenos rozšiřitelných typů dat (EDN)
    • enkóduje data do formátu JSON (nebo do MsgPack)
    • vysoká rychlost parsování v browserech
    • typová bezpečnost bez ztráty informací a
    přesnosti

    View full-size slide

  19. spec
    • specifikace dat pomocí regulárních výrazů
    • spustitelná dokumentace
    • typy na steroidech
    • lepší chybové hlášky
    • generativní testování
    • Open-Closed Principle ➡ dopředná kompatibilita

    View full-size slide

  20. ⬅ transit ➡

    View full-size slide

  21. Kam dál?
    • https://clojurescript.org/guides/quick-start
    • https://medium.com/@conrad_9565/lets-build-a-ui-
    with-qlkit-and-graph-queries-79b7b118ddac
    • http://blog.cognitect.com/blog/2014/7/22/transit
    • https://clojure.org/guides/spec
    • http://clojure.org/blog/2013/06/28/clojure-core-
    async-channels.html

    View full-size slide

  22. https://www.meetup.com/TopMonks-Caffe/
    7. 6. - Loft N8 - Nekázanka

    View full-size slide