JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

28
ClojureScript what are you? Roman Liutikov

Transcript of JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

Page 1: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

ClojureScriptwhat are you?

Roman Liutikov

Page 2: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"
Page 3: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"
Page 4: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

http://www.lisperati.com/casting_spels.pdf

Page 5: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

((((()))))

Page 6: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

John McCarthy

• AI • LISP • Garbage collection

Page 7: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"
Page 8: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

(ns app.core (:require [cljsjs.react-dom :refer [render]]))

(def app-component ;; code )

(render app-component (js/document.getElementById "app"))

Page 9: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

Too many parens? not really ;)

(double 5) double(5)

Clojure JavaScript

Page 10: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

Companies using ClojureScript

CircleCI Atlassian

Cisco eBay

ModnaKasta ! …

Page 11: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

Because Clojure rocks, and JavaScript reaches.

— Rich Hickey

Page 12: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

ClojureScript Release - Rich Hickeyhttps://www.youtube.com/watch?v=tVooR-dF_Ag

Page 13: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

Why ClojureScript?• Functional programming

• Immutable data (mori in JS)

• Great standard library + Google Closure Libraries

• Interactive development

• Robust libraries

• Great optimizing compiler (dead code elimination, tree-shaking and more)

Page 14: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

But it should be slow

http://swannodette.github.io/2013/06/10/porting-notchs-minecraft-demo-to-clojurescript/

http://thi.ng/

Page 15: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

Learn once, use anywhere

• Server-side: JVM, Node.js

• Client-side: ClojureScript + React.js

• Desktop: ClojureScript + Electron

• Mobile: ClojureScript + React Native

Page 16: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

Tools Code

• Atom, LightTable, Vim, Emacs, whatever…

• Parinfer

Page 17: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

Tools Build

Page 18: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

Tools Build

• Leiningen (dependencies + Grunt in JS)

• Boot (dependencies + Gulp in JS)

• Figwheel (Webpack’s HMR in JS)

• Devcards (visual interactive development)

Page 19: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"
Page 20: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

Tools Debugging

• Source maps

• Dirac (Chrome DevTools with extra features for CLJS development)

Page 21: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"
Page 22: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

Tools Testing

• cljs.test

• doo (multi env test runner, supports Karma)

Page 23: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

SPA libraries

• Reagent + re-frame

• Om

• Rum

Page 24: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

Libraries

• clojars.org (NPM in JS)

• cljsjs.github.io (for JS deps)

• clojurewerkz.org

• www.clojure-toolbox.com

Page 25: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

How to try ClojureScript?

• jsbin.com

• cljsfiddle.com (Reagent)

• clojurescript.net (Web REPL)

• planck-repl.org (OSX REPL)

• Replete (iOS REPL)

Page 26: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

ClojureScript for Skeptics - Derek Slagerhttps://www.youtube.com/watch?v=gsffg5xxFQI

Page 27: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

Where to learn more?• clojurescriptkoans.com

• kanaka.github.io/clojurescript/web/synonym.html

• cljs.info/cheatsheet

• clojuredocs.org

• github.com/clojure/clojurescript/wiki

• gitter.im/dev-ua/clojure

• clojurians.net

Page 28: JS Lab`16. Роман Лютиков: "ClojureScript, что ты такое?"

(questions?)

Thanks!

@roman01la