An exploration of the true nature of user interfaces, and a cyclic async functional architecture which captures the essence of UIs and any other form of interaction.
Unidirectional dataflow Functional reactive programming Immutable data structures Virtual DOM One-way data binding Dispatcher Flux Cursors Shadow DOM Components State and props Purity JavaScript in 2015 Declarative Isomorphic
var
screenEvents
=
computer(interactionEvents); var
interactionEvents
=
user(screenEvents); 1
2 㱺 interactionsEvents needs to exist before applying computer() function
var
interactionEvents
=
makeEmptyEventStream();
var
screenEvents
=
computer(interactionEvents); var
interactionEvents2
=
user(screenEvents);
interactionEvents2.listen(function
(ev)
{
interactionEvents.emit(ev);
}); 1
2
3
4
5
6
7
8 Only this matters to you
Unidirectional dataflow Functional reactive programming Immutable data structures Virtual DOM One-way data binding Dispatcher Flux Cursors Shadow DOM Components State and props Purity Not that scary… Declarative Isomorphic