{"id":1351,"date":"2015-05-13T14:23:49","date_gmt":"2015-05-13T14:23:49","guid":{"rendered":"https:\/\/www.zensations.at\/?p=1351"},"modified":"2023-08-09T00:32:08","modified_gmt":"2023-08-09T00:32:08","slug":"flux-capacitation","status":"publish","type":"post","link":"https:\/\/www.zensations.at\/blog\/flux-capacitation\/","title":{"rendered":"Flux Capacitation"},"content":{"rendered":"

Stores, Actions, Components. F\u00fcr wen das nach Einkaufszentrum klingt, der liegt nicht weit daneben – nur im \u00fcbertragenen Sinne. Denn die von Facebook 2013 ins Leben gerufene JavaScript Bibliothek\u00a0React.js<\/a>\u00a0und die damit hervorragend funktionierende Applikations-Architektur\u00a0Flux<\/a>\u00a0bieten eine F\u00fclle neuer M\u00f6glichkeiten in der Webentwicklung. Umdenken ist angesagt! Und unser Einkaufswagen wurde in einem unserer internen Workshops letzte Woche prall gef\u00fcllt.<\/p>\n

React Geschwindigkeit und mehr<\/h2>\n

Zun\u00e4chst ging es um die Eigenheiten von React. Daraufhin f\u00fchrte uns der Weg zu Flux. W\u00e4hrend sich React prim\u00e4r als View-Controller versteht und mit einer virtuellen DOM-Schicht nur das erneuert, was sich auch wirklich in der Darstellung ge\u00e4ndert hat, ist Flux ein Modell, durch das sich Frontend-Entwicklung fast wie Desktop-Software-Development anf\u00fchlt. Durch die virtuelle DOM ist die Darstellung auch komplexerer Anwendungen rasend schnell, somit war die uns zun\u00e4chst gestellte Aufgabe eines kleinen Tickers f\u00fcr React fast lachhaft leicht.<\/p>\n

Aber lernen konnten wir einiges dabei. Angefangen bei JSX (einer Vereinfachung und Beschleunigung der JS-Programmierung durch XML basierte Befehle) hin zum anfangs verwirrenden unidirektionalen Modell von Flux.<\/p>\n

Verwirrung inbegriffen – doch alles handhabbar<\/h2>\n

Denn bis man seinen Kopf von der \u201cklassischen\u201d JavaScript- hin zu komponentenbasierter Entwicklung lenken kann ist einiges Umdenken angesagt. Die einzelnen Komponenten agieren nicht direkt mit der View, sondern fordern via eines Dispatchers und dem Aufrufen spezifischer Actions den Store auf neue Daten zu liefern, mit denen die View in einer render()-Methode geupdatet wird. Und dieser kurze Satz beschreibt eigentlich schon den kompletten Gedanken der Flux Architektur.<\/p>\n

Flux-View vs MVC und Beispiele<\/h2>\n

W\u00e4hrend im bekannten MVC-Modell multidirektionale Kommunikation zu schwierig zu \u00fcberschauenden 1 zu n Verbindungen f\u00fchren kann, bleibt Flux konsistent und die Kommunikation erfolgt immer nur in eine Richtung, bzw. im Kreis. Das wichtigste Utensil dabei ist der Dispatcher, der spezifische Actions an alle m\u00f6glichen Stores verteilt. Zur\u00fcck zu unserem Ticker, f\u00fcr diesen hatten wir eine einzige Komponente (mit der f\u00fcr die View wichtigen render()-Methode), welche mit einer einzigen Action den Store aufforderte, neue Daten (hier die bisherige Laufzeit der App) an die View zu liefern. Klingt nach unn\u00f6tigem Overhead? F\u00fcr einen kleinen Ticker vielleicht \u2013 doch die Skalierbarkeit macht den zun\u00e4chst notwendigen Mehraufwand schnell wett \u2013 wie wir am n\u00e4chsten Beispiel des Workshops schnell erkennen konnten. Wir bauten eine Image-Mover Komponente blitzschnell auf dem bisher Geschriebenen auf, indem wir ein Element in der View austauschten und durch Drag und Drop ein \u201cLeucht-Element\u201d \u00fcber einer ausgegrauten Leinwand per Mausbewegung hin und her schieben konnten.<\/p>\n

Flummox zeigt den weiteren Weg<\/h2>\n

Auf dem Workshop aufbauend wandte ich mich dann \u201eFlummox<\/a>\u201c zu, einer Implementation von Flux, welche die Arbeit damit noch weiter vereinfacht und Boilerplate-Code reduziert. Und kaum mit React und Flux angefangen, bin ich angefixt und nur auf den ersten Blick \u201eflummoxed<\/a>\u201c. Danke f\u00fcr einen verfluxt tollen Workshop und die Einf\u00fchrung in die Entwicklung mit React!<\/p>\n","protected":false},"excerpt":{"rendered":"

Stores, Actions, Components. F\u00fcr wen das nach Einkaufszentrum klingt, der liegt nicht weit daneben – nur im \u00fcbertragenen Sinne. Denn die von Facebook 2013 ins Leben gerufene JavaScript Bibliothek\u00a0React.js\u00a0und die damit hervorragend funktionierende Applikations-Architektur\u00a0Flux\u00a0bieten eine F\u00fclle neuer M\u00f6glichkeiten in der Webentwicklung. Umdenken ist angesagt! Und unser Einkaufswagen wurde in einem unserer internen Workshops letzte Woche […]<\/p>\n","protected":false},"author":25,"featured_media":1352,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[78],"tags":[208],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.zensations.at\/wp-json\/wp\/v2\/posts\/1351"}],"collection":[{"href":"https:\/\/www.zensations.at\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.zensations.at\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.zensations.at\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/www.zensations.at\/wp-json\/wp\/v2\/comments?post=1351"}],"version-history":[{"count":1,"href":"https:\/\/www.zensations.at\/wp-json\/wp\/v2\/posts\/1351\/revisions"}],"predecessor-version":[{"id":1353,"href":"https:\/\/www.zensations.at\/wp-json\/wp\/v2\/posts\/1351\/revisions\/1353"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.zensations.at\/wp-json\/wp\/v2\/media\/1352"}],"wp:attachment":[{"href":"https:\/\/www.zensations.at\/wp-json\/wp\/v2\/media?parent=1351"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.zensations.at\/wp-json\/wp\/v2\/categories?post=1351"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zensations.at\/wp-json\/wp\/v2\/tags?post=1351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}