Slide 1

Slide 1 text

@duffleit @oetzn #VoxxedVienna Flux: A modern way 
 of doing MVC? Eizinger Thomas, Leitner David

Slide 2

Slide 2 text

We like React. @duffleit @oetzn

Slide 3

Slide 3 text

UI-State-Management record state session state screen state GUI Architectures - https://martinfowler.com/eaaDev/uiArchs.html @duffleit @oetzn

Slide 4

Slide 4 text

UI-State-Management record state session state screen state GUI Architectures - https://martinfowler.com/eaaDev/uiArchs.html ensure consistency @duffleit @oetzn

Slide 5

Slide 5 text

We love Redux. @duffleit @oetzn

Slide 6

Slide 6 text

Redux? @duffleit @oetzn

Slide 7

Slide 7 text

Redux? Predictable state container for JavaScript apps @duffleit @oetzn

Slide 8

Slide 8 text

Flux? @duffleit @oetzn

Slide 9

Slide 9 text

Flux? "An application architecture utilizing a unidirectional data flow.“ - Facebook @duffleit @oetzn

Slide 10

Slide 10 text

FLUX - https://facebook.github.io/flux/ @duffleit @oetzn

Slide 11

Slide 11 text

FLUX - https://facebook.github.io/flux/ @duffleit @oetzn

Slide 12

Slide 12 text

FLUX - https://facebook.github.io/flux/ @duffleit @oetzn

Slide 13

Slide 13 text

FLUX - https://facebook.github.io/flux/ @duffleit @oetzn

Slide 14

Slide 14 text

FLUX - https://facebook.github.io/flux/ @duffleit @oetzn

Slide 15

Slide 15 text

Why create something new? @duffleit @oetzn

Slide 16

Slide 16 text

Why create something new? What about MVC or MVP? @duffleit @oetzn

Slide 17

Slide 17 text

They tried. [1] [1] https://www.infoq.com/news/2014/05/facebook-mvc-flux

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

Google Result #1 https://www.c-sharpcorner.com/article/introduction-to-Asp-Net-mvc @duffleit @oetzn

Slide 20

Slide 20 text

Google Result #2 https://www.infoworld.com/article/2941414/microsoft-net/best-practices-in-asp-net-mvc.html @duffleit @oetzn

Slide 21

Slide 21 text

Google Result #3 https://coldbox.ortusbooks.com/content/full/overview/what_is_mvc.html @duffleit @oetzn

Slide 22

Slide 22 text

Google Result #4 https://www.zkoss.org/wiki/ZK_Developer%27s_Reference/MVC @duffleit @oetzn

Slide 23

Slide 23 text

Bliki > Google @duffleit @oetzn

Slide 24

Slide 24 text

Bliki > Google “Different people reading about MVC in different places take different ideas from it and describe these as 'MVC’.” - Martin Fowler @duffleit @oetzn

Slide 25

Slide 25 text

- Adam Tornhill VIEW CONTROLLER MODEL @duffleit @oetzn

Slide 26

Slide 26 text

MVC • Trygve Reenskaug • 10 December 1979 • Smalltalk

Slide 27

Slide 27 text

Model dataflow association

Slide 28

Slide 28 text

Model View dataflow association

Slide 29

Slide 29 text

Model Controller View dataflow association

Slide 30

Slide 30 text

Model Controller View Different abstraction levels dataflow association

Slide 31

Slide 31 text

web.apply(MVC); @duffleit @oetzn

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

Model Controller View @duffleit @oetzn

Slide 34

Slide 34 text

Model Controller View @duffleit @oetzn

Slide 35

Slide 35 text

Model Controller View HTTP-Response @duffleit @oetzn

Slide 36

Slide 36 text

Model Controller View Server Client HTTP-Response @duffleit @oetzn

Slide 37

Slide 37 text

How things evolved with JavaScript. @duffleit @oetzn

Slide 38

Slide 38 text

Make it to the talk in time Fix DI-Todo Get Wunderlist mark as done Todos:
  • ...
  • ...
  • mark as done @duffleit @oetzn

    Slide 39

    Slide 39 text

    Server Client Model Controller View Controller View HTTP-Request HTTP-Response @duffleit @oetzn

    Slide 40

    Slide 40 text

    Server Client Model Controller View Controller View HTTP-Request HTTP-Response @duffleit @oetzn

    Slide 41

    Slide 41 text

    Server Client Model Controller View Controller View HTTP-Request HTTP-Response @duffleit @oetzn

    Slide 42

    Slide 42 text

    Server Client Model Controller View Controller View HTTP-Request HTTP-Response @duffleit @oetzn

    Slide 43

    Slide 43 text

    Server Client Model Controller View Controller View HTTP-Request HTTP-Response JSON HTTP-Request HTTP-Response @duffleit @oetzn

    Slide 44

    Slide 44 text

    Server Client Model Controller View Controller View HTTP-Request HTTP-Response JSON
  • ...
  • todo -> todo.addClass(“done”) HTTP-Request HTTP-Response @duffleit @oetzn

    Slide 45

    Slide 45 text

    No content

    Slide 46

    Slide 46 text

    MVC in JavaScript. @duffleit @oetzn

    Slide 47

    Slide 47 text

    MVC in JavaScript. Maria MVC: https://github.com/petermichaux/maria @duffleit @oetzn

    Slide 48

    Slide 48 text

    MVC in JavaScript. Maria MVC: https://github.com/petermichaux/maria & React + Redux @duffleit @oetzn

    Slide 49

    Slide 49 text

    @duffleit @oetzn

    Slide 50

    Slide 50 text

    @duffleit @oetzn View → React

    Slide 51

    Slide 51 text

    @duffleit @oetzn View → React Model → Redux-Store

    Slide 52

    Slide 52 text

    @duffleit @oetzn View → React Model → Redux-Store Controller → […]

    Slide 53

    Slide 53 text

    @duffleit @oetzn View → React Model → Redux-Store Controller → […] = structure very similar

    Slide 54

    Slide 54 text

    Goals of Flux?

    Slide 55

    Slide 55 text

    Unidirectionality @duffleit @oetzn

    Slide 56

    Slide 56 text

    Unidirectionality @duffleit @oetzn

    Slide 57

    Slide 57 text

    Unidirectionality Model Controller View @duffleit @oetzn

    Slide 58

    Slide 58 text

    Predictability @duffleit @oetzn

    Slide 59

    Slide 59 text

    Predictability StoreState + Action ! StoreState @duffleit @oetzn

    Slide 60

    Slide 60 text

    Predictability StoreState + Action ! StoreState ModelState + Action ! ModelState @duffleit @oetzn

    Slide 61

    Slide 61 text

    Single Source of Truth @duffleit @oetzn

    Slide 62

    Slide 62 text

    Single Source of Truth @duffleit @oetzn

    Slide 63

    Slide 63 text

    Single Source of Truth Model Controlle r View Model Controller View Model Controller View @duffleit @oetzn

    Slide 64

    Slide 64 text

    Single Source of Truth Model Controlle r View Model Controller View Model Controller View @duffleit @oetzn

    Slide 65

    Slide 65 text

    Consistently Display Data on UI @duffleit @oetzn

    Slide 66

    Slide 66 text

    Consistently Display Data on UI View(StoreState) ! UI @duffleit @oetzn

    Slide 67

    Slide 67 text

    Consistently Display Data on UI View(StoreState) ! UI View(ModelState) ! UI @duffleit @oetzn

    Slide 68

    Slide 68 text

    Structure • View → React • Model → Store • Controller → […] Goals • Unidirectionality • Predictability • Single Source of Truth • Consistently Display Data @duffleit @oetzn

    Slide 69

    Slide 69 text

    Flux: A modern way of doing MVC? @duffleit @oetzn

    Slide 70

    Slide 70 text

    Flux: Another way of doing MVC. @duffleit @oetzn

    Slide 71

    Slide 71 text

    Concepts > Buzzwords @duffleit @oetzn

    Slide 72

    Slide 72 text

    Thomas Eizinger @oetzn David Leitner @duffleit

    Slide 73

    Slide 73 text

    nobt.io
 
 split your bills with ease

    Slide 74

    Slide 74 text

    No content