React ist eine JavaScript-Programmbibliothek zur Erstellung von webbasierten Benutzeroberfl√§chen. Komponenten werden in React hierarchisch aufgebaut und k√∂nnen in dessen Syntax als selbst definierte JSX-Tags repr√§sentiert werden. Das Modell von React verspricht durch die Konzepte des unidirektionalen Datenflusses und des Virtual DOM den einfachen, aber trotzdem performanten Aufbau auch komplexer Anwendungen. React bildet typischerweise die Basis f√ľr Single-Page-Webanwendungen, kann jedoch auch mit Node.js serverseitig (vor-)gerendert werden.


Geschichte


React wurde urspr√ľnglich von Jordan Walke, einem Softwareentwickler bei Facebook, entwickelt und 2011 erstmals f√ľr Facebooks Newsfeed und sp√§ter 2012 f√ľr Instagram eingesetzt. Im Mai 2013 wurde von Facebook angek√ľndigt, React zuk√ľnftig als Open-Source-Projekt weiterf√ľhren zu wollen. Im Oktober 2014 wurde die Lizenz von der anfangs Apache-Lizenz auf die BSD-Lizenz mit zus√§tzlicher Patentlizenz ge√§ndert, welche den Widerruf der Lizenz bei Klagen gegen oder bei Patentstreitigkeiten mit Facebook vorbeh√§lt. Diese unkonventionelle Klausel f√ľhrte zu einer kontroversen Diskussion. Eine Umformulierung dieser Patentklausel im April 2015 beendete die Auseinandersetzung nicht. Im Juli 2017 k√ľndigte die Apache Software Foundation an, keine Apache-Projekte mehr mit dieser Zusatzlizenz zu erlauben. Entgegen anf√§nglichen Angaben, nicht von der Klausel abr√ľcken zu wollen, ver√∂ffentlichte Facebook im September 2017 React in der Version 16.0.0 unter der MIT-Lizenz.


Releasefrequenz, Support und Abwärtskompatibilität


React Releases folgen dem Konzept des Semantic Versionings. Es wird zwischen Major-, Minor- und Bugfix-Releases unterschieden.
Es wird versucht nicht abwärtskompatible Major Release zu vermeiden und neue Features primär in Minor Releases zu veröffentlichen. Bislang gab es Major Releases alle ein bis drei Jahre.
Long Term Support (LTS) gibt es offiziell keinen. Sobald eine Major Release ausgeliefert wird, werden f√ľr fr√ľhere Releases keine Bugfixes mehr geliefert. Eine Ausnahme dazu d√ľrften kritische Sicherheitsfehler darstellen. In diesem Fall werden Bugfix-Releases f√ľr die letzten Minor-Releases ausgeliefert.


Kernkonzepte


Unidirektionaler Datenfluss


In Kombination mit der deklarativen Natur der Komponentendefinition in React sollen mittels eines unidirektionalen Datenflussmodells der Aufbau und die Wechselwirkungen zwischen Komponenten vereinfacht werden. Anders als beispielsweise mittels komplexem Event Handling erh√§lt eine Komponente Daten nur √ľber statische Eigenschaften, die dieser √ľbergeben wurden. Eine Komponente kann ihr √ľbergebene Eigenschaften in diesem Modell nicht √§ndern. Eigenschaften k√∂nnen jedoch √ľbergebene Callback-Funktionen sein und somit die √ľbergeordneten Komponenten beeinflussen.


Virtual DOM und DOM-Diffing


Die Kernidee von React besteht in der Annahme, dass der komplette, der betroffenen Komponente untergeordnete Anwendungsbaum bei jeder √Ąnderung einer Eigenschaft der Komponente neu aufgebaut wird. Da es in der Praxis performanceintensiv sein kann, dies z. B. im Webbrowser innerhalb des DOM durchzuf√ľhren, wurde das Konzept des ‚ÄěVirtual DOM‚Äú geschaffen. Die damit verbundene Technik des ‚ÄěDOM-Diffing‚Äú beschreibt das selektive Aktualisieren des DOM auf Basis eines Vergleichs zwischen urspr√ľnglichem und ge√§ndertem Virtual DOM.

Als Beispiel kann ein Entwickler bei einer Messaging-Anwendung in einer Inbox davon ausgehen, dass die Auflistung aller Nachrichten und der untenstehende Z√§hler der Nachrichtenanzahl bei jeder neuen Nachricht komplett neu aufgebaut werden. Das DOM-Diffing sorgt in diesem Fall daf√ľr, dass lediglich die ver√§nderten Teile (in diesem Fall die erg√§nzte neue Nachricht und der aktualisierte Z√§hler) im DOM aktualisiert werden.


JavaScript syntax extension (JSX)


Mit Hilfe der eingebauten, an XML angelehnten Template-Sprache JSX (Javascript XML) steht optional eine Syntax f√ľr die Deklaration von React-Komponenten zur Verf√ľgung, die es erlaubt, Javascript-Logik, HTML und CSS in eine React-Komponente einzukapseln und modular in Web-Applikationen einzusetzen.


Kritik


Anders als bei strikten MVC-Modellen wird in React ein komponentenzentriertes Modell vorgeschlagen, welches Logik f√ľr Interaktion und Darstellung innerhalb einer Funktion b√ľndelt. Dies wird insbesondere aufgrund der weitverbreiteten strikten Trennung zwischen Markup und Logik in Form von Templating-Systemen oft kritisch gesehen.


Weblinks


  • Offizielle Website

  • React auf GitHub

  • ReactJS.DE : deutsche React Community

  • Awesome React. A collection of awesome React libraries, resources and shiny things. auf GitHub

  • React Hooks: Einf√ľhrung (2019)

Einzelnachweise

React


















Metaprime Studio

Send a

message

Wir sind hier, um jede Ihrer Fragen zu beantworten.

Email : info@metaprime.at

Send a

message

Wir sind hier, um jede deiner Fragen zu beantworten.

Email : info@metaprime.at

Kostenloses Website Strategiegespr√§ch‚Äč

In einem kostenlosen Web Strategiegespräch, decken wir ungenutztes Potenziale Ihrer Webseite auf und erarbeiten eine Strategie, damit Du mit Deiner Webseite auf Google erfolgreicher wirst