Top Banner
Post Modern Web App Development Baishampayan “BG” Ghose Helpshift, Inc. @ghoseb with ClojureScript & React.js 1
17

Modern Web App Development using ClojureScript & React.js / Baishampayan “BG” Ghose (Helpshift)

Apr 16, 2017

Download

Engineering

Ontico
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Modern Web App Development using ClojureScript & React.js / Baishampayan “BG” Ghose (Helpshift)

Post Modern Web App Development

Baishampayan “BG” Ghose Helpshift, Inc. @ghoseb

with ClojureScript & React.js

1

Page 2: Modern Web App Development using ClojureScript & React.js / Baishampayan “BG” Ghose (Helpshift)

About Me• Co-founder/CTO Helpshift, Inc. • Distributed Systems • Functional Programming • Performance Engineering • @ghoseb • github.com/ghoseb

Page 3: Modern Web App Development using ClojureScript & React.js / Baishampayan “BG” Ghose (Helpshift)

In the beginning…• we had JavaScript • Poorly designed, yet ubiquitous • No clear way of building high-performance

web applications • Browser woes • jQuery

Page 4: Modern Web App Development using ClojureScript & React.js / Baishampayan “BG” Ghose (Helpshift)

The MV* coup• A Cambrian explosion of JS frameworks • AngularJS • Backbone • Ember • YUI • Dojo • Dart • GWT • …

Page 5: Modern Web App Development using ClojureScript & React.js / Baishampayan “BG” Ghose (Helpshift)
Page 6: Modern Web App Development using ClojureScript & React.js / Baishampayan “BG” Ghose (Helpshift)

A detour into Persistent Data Structures

Page 7: Modern Web App Development using ClojureScript & React.js / Baishampayan “BG” Ghose (Helpshift)

The HAM Trie• Persistent • Immutable • O log(n) characteristics (amortized) • Phil Bagwell, Rich Hickey • Pioneered by Clojure

Page 8: Modern Web App Development using ClojureScript & React.js / Baishampayan “BG” Ghose (Helpshift)

The HAMT

Page 9: Modern Web App Development using ClojureScript & React.js / Baishampayan “BG” Ghose (Helpshift)

Modern JS engines• V8 changed the JS runtime landscape • Fast JIT compiled execution • We’re in the middle of a JS engine arms race

– That’s great for us!

Page 10: Modern Web App Development using ClojureScript & React.js / Baishampayan “BG” Ghose (Helpshift)

React.js• A JS library for building user interfaces • Utilizes a “Virtual DOM” • Enables “immediate mode” updates to UI in

a browser environment • One code path • Don’t bother about previous state • Extremely fast

Page 11: Modern Web App Development using ClojureScript & React.js / Baishampayan “BG” Ghose (Helpshift)

React.js• Reactive Components

– Abstract React Elements – shouldComponentUpdate

Page 12: Modern Web App Development using ClojureScript & React.js / Baishampayan “BG” Ghose (Helpshift)

The Virtual DOM

DIV

P FORM

INPUTSPAN<text>

<text>

DIV

P FORM

INPUTSPAN<text>

<text>

Component

Rendering Events

DOM  Diffing

Page 13: Modern Web App Development using ClojureScript & React.js / Baishampayan “BG” Ghose (Helpshift)

Clojure & ClojureScript• Modern, functional language • Persistent & immutable data-structures • Powerfully expressive • CLJS brings Clojure to the browser

– Compiled to JS – Advanced optimizations via GClosure

Page 14: Modern Web App Development using ClojureScript & React.js / Baishampayan “BG” Ghose (Helpshift)

Reagent = React + Cljs• Wraps React with ClojureScript • Uses ClojureScript's persistent data

structures • Dom diffing is basically = • Even faster than React! • ClojureScript packs a punch as a language • Plethora of convenience tools/libraries

Page 15: Modern Web App Development using ClojureScript & React.js / Baishampayan “BG” Ghose (Helpshift)

github.com/ghoseb/tackytoe

Page 16: Modern Web App Development using ClojureScript & React.js / Baishampayan “BG” Ghose (Helpshift)

Questions?

Page 17: Modern Web App Development using ClojureScript & React.js / Baishampayan “BG” Ghose (Helpshift)

Thanks!

@ghoseb