SlideShare a Scribd company logo
1 of 41
@duffleit @oetzn#VoxxedVienna
Flux: A modern way
of doing MVC?
Eizinger Thomas, Leitner David
We like React.
@duffleit@oetzn
UI-State-Management
record state
session state
screen state
GUI Architectures - https://martinfowler.com/eaaDev/uiArchs.html
ensure
consistency
@duffleit@oetzn
We love Redux.
@duffleit@oetzn
Redux?
Predictable state container for JavaScript apps
@duffleit@oetzn
Flux?
"An application architecture utilizing a unidirectional data flow.“
- Facebook
@duffleit@oetzn
FLUX - https://facebook.github.io/flux/
@duffleit@oetzn
Why create something new?
What about MVC or MVP?
@duffleit@oetzn
They tried. [1]
[1] https://www.infoq.com/news/2014/05/facebook-mvc-flux
Google Result #1
https://www.c-sharpcorner.com/article/introduction-to-Asp-Net-mvc
@duffleit@oetzn
Google Result #2
https://www.infoworld.com/article/2941414/microsoft-net/best-practices-in-asp-net-mvc.html
@duffleit@oetzn
Google Result #3
https://coldbox.ortusbooks.com/content/full/overview/what_is_mvc.html
@duffleit@oetzn
Google Result #4
https://www.zkoss.org/wiki/ZK_Developer%27s_Reference/MVC
@duffleit@oetzn
Bliki > Google
“Different people reading about MVC in different places take different
ideas from it and describe these as 'MVC’.”
- Martin Fowler
@duffleit@oetzn
- Adam Tornhill
VIEW
CONTROLLER
MODEL
@duffleit@oetzn
MVC
• Trygve Reenskaug
• 10 December 1979
• Smalltalk
Model
Controller View
Different abstraction levels
dataflow
association
web.apply(MVC);
@duffleit@oetzn
AbstractUIStateManagementPattern mvc =
PatternStore.load(Patterns.MVC);
// todo: use DI here
Web theWeb = new WebFactory().create();
try {
theWeb.apply(mvc);
} catch (PatternApplicationException e) {
// never happens
}
@duffleit@oetzn
Model
Controller View
Server
Client
HTTP-
Request
HTTP-Response
@duffleit@oetzn
How things evolved with JavaScript.
@duffleit@oetzn
Make it to the talk in time
Fix DI-Todo
Get Wunderlist mark as done
Todos:
<li class=“done”>...</li>
<li>...</li>mark as done
@duffleit@oetzn
Server
Client
Model
Controller ViewController View
HTTP-
Request
HTTP-Response
@duffleit@oetzn
Server
Client
Model
Controller ViewController View
HTTP-
Request
HTTP-Response
JSON
<li class=“done”>...</li>
todo -> todo.addClass(“done”)
HTTP-
Request
HTTP-Response
@duffleit@oetzn
MVC in JavaScript.
Maria MVC: https://github.com/petermichaux/maria
& React + Redux
@duffleit@oetzn
View → ReactView → React
Model → Redux-StoreModel → Redux-Store
Controller → [...]
= structure very similar
Controller → […]
@duffleit@oetzn
Goals of Flux?
UnidirectionalityModel
Controller View
@duffleit@oetzn
Predictability
StoreState + Action → StoreState
ModelState + Action → ModelState
@duffleit@oetzn
Single Source of Truth
Model
Controller View
Model
Controller View
Model
Controller View
@duffleit@oetzn
Consistently Display Data on UI
View(StoreState) → UI
View(ModelState) → UI
@duffleit@oetzn
Structure
• View → React
• Model → Store
• Controller → […]
Goals
• Unidirectionality
• Predictability
• Single Source of Truth
• Consistently Display Data
@duffleit@oetzn
Flux: A modern way of doing MVC?
@duffleit@oetzn
Flux: Another way of doing MVC.
@duffleit@oetzn
Concepts > Buzzwords
@duffleit@oetzn
Thomas Eizinger
@oetzn
David Leitner
@duffleit
nobt.io
split your bills with ease
Thomas Eizinger
@oetzn
David Leitner
@duffleit
Flux: A modern way of doing MVC?

More Related Content

What's hot

Accelerated compositing in WebKit: Now and in the future (DEVIEW 2015)
Accelerated compositing in WebKit: Now and in the future (DEVIEW 2015)Accelerated compositing in WebKit: Now and in the future (DEVIEW 2015)
Accelerated compositing in WebKit: Now and in the future (DEVIEW 2015)Igalia
 
Implementing CI/CD in a Serverless Environment
Implementing CI/CD in a Serverless EnvironmentImplementing CI/CD in a Serverless Environment
Implementing CI/CD in a Serverless EnvironmentBob Reselman
 
Paweł Kowalczyk (Codete) - Continuous integration for iOS
Paweł Kowalczyk (Codete) - Continuous integration for iOSPaweł Kowalczyk (Codete) - Continuous integration for iOS
Paweł Kowalczyk (Codete) - Continuous integration for iOSBusiness Link Krakow
 
Are we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we workAre we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we workRoman Pickl
 
JHipster presentation by Gaetan Bloch
JHipster presentation by Gaetan BlochJHipster presentation by Gaetan Bloch
JHipster presentation by Gaetan BlochGaëtan Bloch
 
JHipster React - Devoxx BE 2017
JHipster React - Devoxx BE 2017JHipster React - Devoxx BE 2017
JHipster React - Devoxx BE 2017Deepu K Sasidharan
 
Drupal Café October 2014: DrupalCon Amsterdam
Drupal Café October 2014: DrupalCon AmsterdamDrupal Café October 2014: DrupalCon Amsterdam
Drupal Café October 2014: DrupalCon AmsterdamExove
 
Are we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we workAre we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we workRoman Pickl
 

What's hot (9)

Accelerated compositing in WebKit: Now and in the future (DEVIEW 2015)
Accelerated compositing in WebKit: Now and in the future (DEVIEW 2015)Accelerated compositing in WebKit: Now and in the future (DEVIEW 2015)
Accelerated compositing in WebKit: Now and in the future (DEVIEW 2015)
 
Implementing CI/CD in a Serverless Environment
Implementing CI/CD in a Serverless EnvironmentImplementing CI/CD in a Serverless Environment
Implementing CI/CD in a Serverless Environment
 
Paweł Kowalczyk (Codete) - Continuous integration for iOS
Paweł Kowalczyk (Codete) - Continuous integration for iOSPaweł Kowalczyk (Codete) - Continuous integration for iOS
Paweł Kowalczyk (Codete) - Continuous integration for iOS
 
Are we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we workAre we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we work
 
JHipster presentation by Gaetan Bloch
JHipster presentation by Gaetan BlochJHipster presentation by Gaetan Bloch
JHipster presentation by Gaetan Bloch
 
JHipster React - Devoxx BE 2017
JHipster React - Devoxx BE 2017JHipster React - Devoxx BE 2017
JHipster React - Devoxx BE 2017
 
DevOps is dead
DevOps is deadDevOps is dead
DevOps is dead
 
Drupal Café October 2014: DrupalCon Amsterdam
Drupal Café October 2014: DrupalCon AmsterdamDrupal Café October 2014: DrupalCon Amsterdam
Drupal Café October 2014: DrupalCon Amsterdam
 
Are we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we workAre we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we work
 

Similar to Flux: A modern way of doing MVC?

Javaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learnedJavaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learnedpgt technology scouting GmbH
 
O365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - MaterialO365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - MaterialThomas Daly
 
Step by Step - Reusing old features to build new ones
Step by Step - Reusing old features to build new onesStep by Step - Reusing old features to build new ones
Step by Step - Reusing old features to build new onesAllon Mureinik
 
Azure for a Design and User Experience (DUX) teams
Azure for a Design and User Experience (DUX) teamsAzure for a Design and User Experience (DUX) teams
Azure for a Design and User Experience (DUX) teamsEmma Woods
 
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Microsoft
 
OpenShift: Devops Made Easy
OpenShift: Devops Made EasyOpenShift: Devops Made Easy
OpenShift: Devops Made EasyBent Terp
 
From 0 to DevOps: Lessons Learned Moving from On-Prem to Cloud Native
From 0 to DevOps: Lessons Learned Moving from On-Prem to Cloud NativeFrom 0 to DevOps: Lessons Learned Moving from On-Prem to Cloud Native
From 0 to DevOps: Lessons Learned Moving from On-Prem to Cloud NativeKlaus Enzenhofer
 
Odo improving the developer experience on OpenShift - hack &amp; sangria
Odo   improving the developer experience on OpenShift - hack &amp; sangriaOdo   improving the developer experience on OpenShift - hack &amp; sangria
Odo improving the developer experience on OpenShift - hack &amp; sangriaJorge Morales
 
提到 DevOps 到底在談些什麼玩意兒?
提到 DevOps 到底在談些什麼玩意兒?提到 DevOps 到底在談些什麼玩意兒?
提到 DevOps 到底在談些什麼玩意兒?Chen Cheng-Wei
 
Oracle Apex Technical Introduction
Oracle Apex   Technical IntroductionOracle Apex   Technical Introduction
Oracle Apex Technical Introductioncrokitta
 
ASP.NET 5: What's the Big Deal
ASP.NET 5: What's the Big DealASP.NET 5: What's the Big Deal
ASP.NET 5: What's the Big DealJim Duffy
 
Red Hat OpenShift Container Platform Overview
Red Hat OpenShift Container Platform OverviewRed Hat OpenShift Container Platform Overview
Red Hat OpenShift Container Platform OverviewJames Falkner
 
OpenNTF Blast from ILUG 2007
OpenNTF Blast from ILUG 2007OpenNTF Blast from ILUG 2007
OpenNTF Blast from ILUG 2007Kevin Pettitt
 
Processing Twitter Events in Real-Time with Oracle Event Processing (OEP) 12c
Processing Twitter Events in Real-Time with Oracle Event Processing (OEP) 12cProcessing Twitter Events in Real-Time with Oracle Event Processing (OEP) 12c
Processing Twitter Events in Real-Time with Oracle Event Processing (OEP) 12cGuido Schmutz
 
Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016
Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016
Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016Florent BENOIT
 
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDE
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDENantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDE
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDEFlorent BENOIT
 
Rakuten and Microsoft talk DevOps in Real World
Rakuten and Microsoft talk DevOps in Real WorldRakuten and Microsoft talk DevOps in Real World
Rakuten and Microsoft talk DevOps in Real WorldTsuyoshi Ushio
 

Similar to Flux: A modern way of doing MVC? (20)

Javaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learnedJavaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learned
 
GWT Architectures and Lessons Learned (WJAX 2013)
GWT Architectures and Lessons Learned (WJAX 2013)GWT Architectures and Lessons Learned (WJAX 2013)
GWT Architectures and Lessons Learned (WJAX 2013)
 
Fastest offline with SQLite
Fastest offline with SQLiteFastest offline with SQLite
Fastest offline with SQLite
 
O365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - MaterialO365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - Material
 
Step by Step - Reusing old features to build new ones
Step by Step - Reusing old features to build new onesStep by Step - Reusing old features to build new ones
Step by Step - Reusing old features to build new ones
 
Azure for a Design and User Experience (DUX) teams
Azure for a Design and User Experience (DUX) teamsAzure for a Design and User Experience (DUX) teams
Azure for a Design and User Experience (DUX) teams
 
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015
 
OpenShift: Devops Made Easy
OpenShift: Devops Made EasyOpenShift: Devops Made Easy
OpenShift: Devops Made Easy
 
From 0 to DevOps: Lessons Learned Moving from On-Prem to Cloud Native
From 0 to DevOps: Lessons Learned Moving from On-Prem to Cloud NativeFrom 0 to DevOps: Lessons Learned Moving from On-Prem to Cloud Native
From 0 to DevOps: Lessons Learned Moving from On-Prem to Cloud Native
 
Odo improving the developer experience on OpenShift - hack &amp; sangria
Odo   improving the developer experience on OpenShift - hack &amp; sangriaOdo   improving the developer experience on OpenShift - hack &amp; sangria
Odo improving the developer experience on OpenShift - hack &amp; sangria
 
提到 DevOps 到底在談些什麼玩意兒?
提到 DevOps 到底在談些什麼玩意兒?提到 DevOps 到底在談些什麼玩意兒?
提到 DevOps 到底在談些什麼玩意兒?
 
Oracle Apex Technical Introduction
Oracle Apex   Technical IntroductionOracle Apex   Technical Introduction
Oracle Apex Technical Introduction
 
ASP.NET 5: What's the Big Deal
ASP.NET 5: What's the Big DealASP.NET 5: What's the Big Deal
ASP.NET 5: What's the Big Deal
 
Red Hat OpenShift Container Platform Overview
Red Hat OpenShift Container Platform OverviewRed Hat OpenShift Container Platform Overview
Red Hat OpenShift Container Platform Overview
 
OpenNTF Blast from ILUG 2007
OpenNTF Blast from ILUG 2007OpenNTF Blast from ILUG 2007
OpenNTF Blast from ILUG 2007
 
Processing Twitter Events in Real-Time with Oracle Event Processing (OEP) 12c
Processing Twitter Events in Real-Time with Oracle Event Processing (OEP) 12cProcessing Twitter Events in Real-Time with Oracle Event Processing (OEP) 12c
Processing Twitter Events in Real-Time with Oracle Event Processing (OEP) 12c
 
Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016
Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016
Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016
 
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDE
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDENantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDE
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDE
 
10 Thesen zur professionellen Softwareentwicklung
10 Thesen zur professionellen Softwareentwicklung10 Thesen zur professionellen Softwareentwicklung
10 Thesen zur professionellen Softwareentwicklung
 
Rakuten and Microsoft talk DevOps in Real World
Rakuten and Microsoft talk DevOps in Real WorldRakuten and Microsoft talk DevOps in Real World
Rakuten and Microsoft talk DevOps in Real World
 

Recently uploaded

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 

Recently uploaded (20)

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 

Flux: A modern way of doing MVC?

Editor's Notes

  1. We have at least one thing in common, we love React. But what is React? It is just a tiny, but pretty cool library that provides support for rendering UIs from javascript. And - it's great tooling, a fast growing commuity, and some very interesting concepts behind it.
  2. <div>Icons made by <a href="http://www.freepik.com" title="Freepik">Freepik</a> from <a href="https://www.flaticon.com/" title="Flaticon">www.flaticon.com</a> is licensed by <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0" target="_blank">CC 3.0 BY</a></div>
  3. Independent from ReactJS Can be used with angular for example CLI if you take redux and add a view library like react, you end up with the flux architecture pattern
  4. Independent from ReactJS Can be used with angular for example CLI if you take redux and add a view library like react, you end up with the flux architecture pattern
  5. Important question is why did engineers at Facebook invent a new way of structuring UI-related code? Why not make use of one of the existing patterns? MVC did not scale. Messenger problem.
  6. MVC did not scale for them. Very controversial statement.
  7. After some research we discovered many differences in how MVC is described or explained. So like every professional software engineer, we asked Google. And the result was not that helpful.
  8. https://www.c-sharpcorner.com/article/introduction-to-Asp-Net-mvc/ (appearantly everyone is talking to everyone)
  9. https://www.infoworld.com/article/2941414/microsoft-net/best-practices-in-asp-net-mvc.html (oh wait, the view is not talking to the controller?)
  10. https://coldbox.ortusbooks.com/content/full/overview/what_is_mvc.html (who needs boxes and circles when you can have gears)
  11. https://www.zkoss.org/wiki/ZK_Developer%27s_Reference/MVC (so now the database is the whole model, and gears again)
  12. So, there seems to be some confusion around MVC. And of course, we were not the first to discover this.
  13. So, there seems to be some confusion around MVC. And of course, we were not the first to discover this.
  14. After digging not too long, we discovered that there is actually a paper from 1979 by a guy named Trygve Reenskaug that describes MVC. Anybody ever took a look at that? Idea: consistently displaying data, separation of concerns (both things are kind of related to the problem stated before) 3 types of classes: models, views and controllers
  15. Model: hold state, model the real world, ignorant of how it is displayed and interacted with, just provide the API View: not the representation itself, take model and transform it into the presentation, “urgency level -> color”-mapping Controller: take input, map to commands for the model
  16. Let’s go on a journey through the evolution of web applications In the beginning, there was no JavaScript MVC on the server
  17. Let’s go on a journey through the evolution of web applications In the beginning, there was no JavaScript MVC on the server <div>Icons made by <a href="http://www.freepik.com" title="Freepik">Freepik</a> from <a href="https://www.flaticon.com/" title="Flaticon">www.flaticon.com</a> is licensed by <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0" target="_blank">CC 3.0 BY</a></div>
  18. Let’s go on a journey through the evolution of web applications In the beginning, there was no JavaScript MVC on the server .setClass(„done“)
  19. We you think about it, it is quite straight forward: What parts do we need to cover? Model View Controller What is React doing? What is the Redux Store doing? Observer pattern -> dominant in MVC Sidenote: Redux store is Subject/Obersable, View is Observer, like in the original Smalltalk implementation Actually it's quite straight forward React takes a Model and creates UI -> ViewPart Where does the model come from? Redux Store D: What is the controllers job? Change the model based on user input “This functionality is what MVC calls the controller”