Intro to ClojureScript
@maria__geller
Personal background
Rationale
ClojureScript Syntax
Tooling
Demos
Outro
Clojure rocks and JavaScript reaches.
Rich Hickey, NYC Clojure meet up 20 July 2011
What is Clojure
introduced in 2007 by Rich Hickey
Lisp dialect
runs on the JVM
Why Clojure rocks
immutable data structures
support for concurrency
macros
great Java interop
What is ClojureScript?
compiles Clojure to JavaScript
outputs ES3 compatible JavaScript
compiler written in Clojure
integrates well with Google Closure
Why ClojureScript?
more robust code
ECMAScript 3, immutable data structures, advanced optimization
same language for back-end and front-end
share code
great JavaScript interop
use existing libraries, JS module support
Finally show me some ClojureScript!
Data Structures
(def x [2 3 4]) (conj x 1) [x]
Equality
(= "2" 2)
Functions
(defn my-add [x y] (+ x y)) (my-add 3 4)
Higher-order Functions
(map inc [1 2 3])
JS interop - Property access
(set! (.. js/document -body -style -backgroundColor) "tomato")
JS interop - Function invocation
(.alert js/window "Hello, AkJS")
Tooling
source map support
REPLs
plugins for live code reloading
bootstrapped ClojureScript
Demos
In summary
more robust and simpler code
immutability, macros
advanced optimization through Google Closure
great JavaScript interop
More info
ClojureScript GitHub Wiki
ClojureScript Koans
ClojureScript Unraveled
clojurians Slack
LispCast Video Tutorials