SlideShare a Scribd company logo
Reactive
programming with
Cycle.js
HELLO!
I am Luca Mezzalira
Solutions Architect @ Massive Interactive
Google Developer Expert on Web Technologies
Community Manager of London JavaScript User Group
AGENDA
▸ Reactive programming
▸ Model - View - Intent
▸ Cycle.js
1.
REACTIVE
PROGRAMMING
PROGRAMMING PARADIGMS
FUNCTIONAL
It is a declarative
programming paradigm,
which means
programming is done
with expressions. In
functional code, the
output value of a
function depends only
on the arguments that
are input to the
function, so calling a
function f twice with the
same value for an
argument x will produce
the same result f(x)
each time.
IMPERATIVE
It is a programming
paradigm that uses
statements that change a
program's state. In much
the same way that the
imperative mood in
natural languages
expresses commands, an
imperative program
consists of commands
for the computer to
perform. Imperative
programming focuses
on describing how a
program operates.
REACTIVE
It is a programming
paradigm oriented
around data flows and
the propagation of
change. This means that
it should be possible to
express static or dynamic
data flows with ease in
the programming
languages used, and that
the underlying execution
model will automatically
propagate changes
through the data flow.
Imperative vs Reactive
REACTIVE PROGRAMMING IS
PROGRAMMING WITH
ASYNCHRONOUS DATA STREAMS
IS REACTIVE
PROGRAMMING
REALLY SO
INTERESTING?
OBSERVER PATTERN
The observer pattern is a software design pattern in which an object,
called the subject, maintains a list of its dependents, called
observers, and notifies them automatically of any state changes,
usually by calling one of their methods. It is mainly used to implement
distributed event handling systems.
ITERATOR PATTERN
In object-oriented programming, the iterator pattern is a design
pattern in which an iterator is used to traverse a container and
access the container's elements. The iterator pattern decouples
algorithms from containers
RxJS
“BACK-PRESSURE? WHAT?!
Main obstacle when you approach for the first time
Reactive Programming is the vocabulary.
My first suggestion is to familiarise with the domain, a lot
of concepts become way easier if you understand what
they mean before you start to work with them.
streams, hot observables, cold observables, marbles
diagram, back-pressure, operators...
STREAMS
A stream is a sequence of ongoing events
ordered in time. It can emit three different
things: a value (of some type), an error, or a
"completed" signal.
EVERYTHING CAN BE A STREAM
COLD OBSERVABLES
Cold observables start running upon
subscription: the observable sequence only starts
pushing values to the observers when subscribe
is called.
Values are also not shared among subscribers.
HOT OBSERVABLES
When an observer subscribes to a hot observable
sequence, it will get all values in the stream
that are emitted after it subscribes.
The hot observable sequence is shared among
all subscribers, and each subscriber is pushed
the next value in the sequence.
OPERATORS
▸ Creating Observables
▸ Transforming Observables
▸ Filtering Observables
▸ Combining Observables
▸ Error Handling Operators
▸ Mathematical Operators
▸ Conditional Operators
▸ Connectable Observables
Operators
reactivex.io/documentation/operators.html
MARBLES DIAGRAM
rxmarbles.com
2.
MODEL VIEW
INTENT
Architectures Timeline
90s
MVP
80s
MVC
2005
MVVM
2013
FLUX
2009
DCI
2015
MVI
VIEW INTENT
MODEL
RENDERER
futurice.com/blog/reactive-mvc-and-the-virtual-dom
MVI RULES
▸ A module shouldn’t control
any other module (controller
in MVC)
▸ The only shared part between
modules are observables
▸ Intent is a component with
only one responsibility: It
should interpret what the
user is trying to do in terms
of model updates, and export
these "user intentions" as
events
VIEW
Input: data events from the Model.
Output: a Virtual DOM rendering of the model,
and raw user input events (such as clicks,
keyboard typing, accelerometer events, etc).
VIEW
RENDERER
INTENT
Input: raw user input events from the View.
Output: model-friendly user intention events.
INTENT
MODEL
Input: user interaction events from the Intent.
Output: data events.
MODEL
MVI PROs
▸ Better separation of concern
▸ Monodirectional flow
▸ Dependency Injection
▸ Applications become easier
to test (in particular views)
▸ All the states live inside the
Model and the View is state-
agnostic
3.
Cycle.js
Cycle.js
Cycle’s core abstraction is your
application as a pure function main()
where inputs are read effects (sources)
from the external world and outputs
(sinks) are write effects to affect the
external world.
These side effects in the external world
are managed by drivers: plugins that
handle DOM effects, HTTP effects, etc.
CORE CONCEPTS
▸ Objects
▸ Functions
▸ Drivers
▸ Helpers
DRIVERS
Drivers are functions that listen to
Observable sinks (their input), perform
imperative side effects, and may return
Observable sources (their output).
http://cycle.js.org/drivers.html
Cycle.js DOMDriver
Cycle.js in action
thenewstack.io/developers-need-know-mvi-model-view-intent
Why not using
Reactive Programming
in any project then?
THANKS EVERYONE
Q&A
@lucamezzalira
www.lucamezzalira.com
www.londonjs.uk
mezzalab@gmail.com

More Related Content

PDF
Next generation of frontend architectures
PPTX
Evolution of front end architectures
PPTX
Mvi an architecture for reactive programming
PPTX
Cycle.js a reactive framework
PPTX
Dependency Inversion in large-scale TypeScript applications with InversifyJS
PDF
Cyclejs introduction
PDF
Next generation of frontend architectures - Luca Mezzalira - Codemotion Milan...
PPTX
Visualizing Software Architecture and visualizations
Next generation of frontend architectures
Evolution of front end architectures
Mvi an architecture for reactive programming
Cycle.js a reactive framework
Dependency Inversion in large-scale TypeScript applications with InversifyJS
Cyclejs introduction
Next generation of frontend architectures - Luca Mezzalira - Codemotion Milan...
Visualizing Software Architecture and visualizations

Similar to Reactive programming with cycle.js (20)

PDF
DZone_RC_RxJS
PDF
From User Action to Framework Reaction
DOCX
DOCX
PDF
From User Action to Framework Reaction
PDF
379008-rc217-functionalprogramming
PPTX
Programming Presentation by Lucky Bishwakarma
PPTX
Functional programming in TypeScript
PDF
Actor model in F# and Akka.NET
PPTX
PATTERNS06 - The .NET Event Model
PPTX
OOP with Java - Java Introduction (Basics)
PPTX
Lecture 1 uml with java implementation
PPTX
Unit 1
PPTX
object oriented programming language in c++
PPTX
Understanding angular js
PPTX
Pattern oriented architecture for web based architecture
ODP
The Bespoke Software Product Factory (2007)
DOCX
Training 8051Report
ODP
Software design
PDF
Book management system
DZone_RC_RxJS
From User Action to Framework Reaction
From User Action to Framework Reaction
379008-rc217-functionalprogramming
Programming Presentation by Lucky Bishwakarma
Functional programming in TypeScript
Actor model in F# and Akka.NET
PATTERNS06 - The .NET Event Model
OOP with Java - Java Introduction (Basics)
Lecture 1 uml with java implementation
Unit 1
object oriented programming language in c++
Understanding angular js
Pattern oriented architecture for web based architecture
The Bespoke Software Product Factory (2007)
Training 8051Report
Software design
Book management system
Ad

More from luca mezzalira (10)

PDF
Kaizen - the key of continuos improvement
PDF
Having fun with Adobe AIR 2013
KEY
Flash Platform su dispositivi mobili
PDF
Flash Platform Ovierview
PDF
Using design pattern for mobile
PDF
Sviluppo di contenuti Flash Platform su iOS e Android
PDF
Actionscript 3 Design Pattern
PDF
Flash Platform & Android
PDF
Adobe AIR & Printing
PDF
Android Development with Flash Platform
Kaizen - the key of continuos improvement
Having fun with Adobe AIR 2013
Flash Platform su dispositivi mobili
Flash Platform Ovierview
Using design pattern for mobile
Sviluppo di contenuti Flash Platform su iOS e Android
Actionscript 3 Design Pattern
Flash Platform & Android
Adobe AIR & Printing
Android Development with Flash Platform
Ad

Recently uploaded (20)

PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Encapsulation theory and applications.pdf
PDF
Electronic commerce courselecture one. Pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PPTX
Big Data Technologies - Introduction.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
A Presentation on Artificial Intelligence
PDF
Empathic Computing: Creating Shared Understanding
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Approach and Philosophy of On baking technology
“AI and Expert System Decision Support & Business Intelligence Systems”
Encapsulation theory and applications.pdf
Electronic commerce courselecture one. Pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Big Data Technologies - Introduction.pptx
The AUB Centre for AI in Media Proposal.docx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Dropbox Q2 2025 Financial Results & Investor Presentation
Per capita expenditure prediction using model stacking based on satellite ima...
20250228 LYD VKU AI Blended-Learning.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
A Presentation on Artificial Intelligence
Empathic Computing: Creating Shared Understanding
Mobile App Security Testing_ A Comprehensive Guide.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Understanding_Digital_Forensics_Presentation.pptx
NewMind AI Weekly Chronicles - August'25 Week I
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Approach and Philosophy of On baking technology

Reactive programming with cycle.js