Welcome to ClojureScript
Ikuru K
About me
- Work at Cybozu Startups, inc
Clojure?
- Programming language
- Lisp () () ()
- Hosted on the JVM, emits jvm bytecode
- Compiler, not an interpreter
- Fast!
ClojureScript?
- Clojure -> JavaScript Compiler
- Clojure code works on the browser!
Compiles this
To this!
Strength: Google Closure Library
- Pay only for the stuff you use
- unused stuff gets removed by Closure Compiler (later)
- Lot of good stuff
- Dom
- XhrIo
- Crypto
- UI Components
- And more...
Strength: Google Closure Compiler (advanced mode)
- Aggressive minification
- Dead code elimination
- Inlining
- ClojureScript emits code that can be
advance compiled
Strength: React wrappers
(+ React ImmutableDataStructures)
=> good
- Om, Reagent, Quiescent, Rum...
Strength: interactive dev via repl
- Figwheel + cljs-repl
- Hot load code into browser without
destroying state
Strength: Macros
- User extensible syntax without
changing core compiler
- Compile time calculation
Strength: Stability
- Backwards compatibility is high priority
- https://twitter.com/stuarthalloway/status/793614590781390852
Strength: Maturity
- First release = 2011
Strength: Runs on NodeJs
- https://github.com/anmonteiro/lumo
Strength: Targets React Native
- https://github.com/drapanjanas/re-natal
Interested?
1. Install leiningen (Clojure build tool)
2. $lein new figwheel (template)
Quick Demo
Resources
- ClojureScript for skeptics
- https://www.youtube.com/watch?v=gsffg5xxFQI
- Developing ClojureScript with Figwheel
- https://www.youtube.com/watch?v=j-kj2qwJa_E
Problems
- ‘Emacs harassment’
- First class dev experience coupled with good editor
integration
- Alternatives are growing, but still a challenge for a
newbie to learn the language+editor integration
- Integration with external libs
- Workaround with externs/Type inference
- cljsjs
- Situation getting much better these days
Enjoy!

Welcome to ClojureScript