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

ClojureScript

 ClojureScript

Aleš Roubíček
PRO

May 22, 2018
Tweet

More Decks by Aleš Roubíček

Other Decks in Programming

Transcript

  1. ClojureScript @alesroubicek #jsDevMeetup

  2. None
  3. Clojure

  4. 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
  5. 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
  6. 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}
  7. Funkce (println "Hello #jsDevMeetup!")

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

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

  10. Definice funkce (defn greet "Returns a friendly greeting" [your-name] (str

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

    "Hello, " your-name)) function name doc string parameters function body
  12. A dál? • klíčová slova • operátory • speciální výrazy

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

    • direktivy preprocesoru Zbytečný
  14. –Rich Hickey “Clojure is a small language, and intends to

    remain so”
  15. ClojureScript

  16. 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)
  17. REPL Driven Development • interaktivní vývoj • rychlá zpětná vazba

    • nástroje • cljs.main • lumo • lein figwheel
  18. 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í
  19. 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ů
  20. 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
  21. 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
  22. ⬅ transit ➡

  23. 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
  24. https://www.meetup.com/TopMonks-Caffe/ 7. 6. - Loft N8 - Nekázanka