Building SPA
in 2017
Arek Flinik
@aflinik
wroc_love.rb 2015
How many of you
don't work on SPA?
So why do we still talk
about cells rendering HTML
from our apps so much?
Typical 2015 SPA
DB
Data (Model / Repo / Etc)
Controller
Response formatting
AJAX
Model / Store
Controller / Glue / Dispatcher
View / Component / Template
Routes
Typical 2015 SPA
DB
Data (Model / Repo / Etc)
Controller
Response formatting
AJAX
Model / Store
Controller / Glue / Dispatcher
View / Component / Template
Routes
BOILERPLATE
Typical 2015 SPA
DB
Data (Model / Repo / Etc)
Controller
Response formatting
AJAX
Model / Store
Controller / Glue / Dispatcher
View / Component / Template
Routes
BOILERPLATE
Overly coupled
Example
Andrzej
what if we want to add new information here?
Andrzej
Example
314 posts
what if we want to add new information here?
Example
DB
Data (Model / Repo / Etc)
Controller
Response formatting
AJAX
Model / Store
Controller / Glue / Dispatcher
View / Component / Template
Routes
Example
DB
Data (Model / Repo / Etc)
Controller
Response formatting
AJAX
Model / Store
Controller / Glue / Dispatcher
View / Component / Template
Routes
Solution?
One app for
everything!
Solution?
One app for
everything!
Yeeeaaah, but...
Better solution?
HASKELL ;-)
Better solution?
Falcor
from
Relay
from
Better solution?
DB
Data (Model / Repo / Etc)
Controller
Response formatting
AJAX
Model / Store
Controller / Glue / Dispatcher
View / Component / Template
Routes
Better solution?
DB
Data (Model / Repo / Etc)
Controller
Response formatting
AJAX
Model / Store
Controller / Glue / Dispatcher
View / Component / Template
Routes
BOILERPLATE
Overly coupled
🚫
Better solution?
DB
Data (Model / Repo / Etc)
Relay / Falcor
View / Component / Template
GraphQL / ???
Want to try it?
It's not 2017 yet 😒
Thanks 👌

Writing SPA in 2017