Brauchen Projekte React? Alle davon!

Avatar of Sacha Greif
Sacha Greif am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Wann braucht ein Projekt React? Das ist die Frage, der sich Chris Coyier in einem aktuellen Blogbeitrag gewidmet hat. Ich bin ein großer Fan von Chris' Schreibstil, daher war ich neugierig, was er zu sagen hatte.

Kurz gesagt, Chris stellt eine Reihe von guten und schlechten Gründen vor, warum man React (oder andere ähnliche moderne JavaScript-Bibliotheken) für ein Projekt verwenden könnte. Doch während ich seinen Argumenten nicht widerspreche, komme ich dennoch zu einer anderen Schlussfolgerung.

Deshalb bin ich heute hier, um zu argumentieren, dass die Antwort auf die Frage "Wann braucht ein Projekt React?" nicht "es kommt darauf an" ist. Sondern "jedes Mal".

React vs Vue vs Angular vs…

Zuerst einmal eine Klarstellung: In seinem Artikel wählte Chris React als Platzhalter für "Front-End-Bibliotheken" im Allgemeinen, und das werde ich hier auch tun. Außerdem ist React das, womit ich aus meiner laufenden Arbeit an VulcanJS, einem React- und GraphQL-Framework, am vertrautesten bin.

Das gesagt, sollten meine Argumente gleichermaßen für jede andere Bibliothek gelten, die die gleichen Funktionen wie React bietet.

Die Macht des Hammers

Wenn man nur einen Hammer hat, sieht alles wie ein Nagel aus.

Dieses Sprichwort wird seit langem verwendet, um jeden zu verurteilen, der versucht, einen systematischen Einheitsansatz auf jedes Problem anzuwenden.

Aber nehmen wir für einen Moment an, Sie würden in einer Welt voller Nägel leben (auch wenn das unangenehm klingt) und Ihr treuer Hammer könnte sich um alle Probleme kümmern, denen Sie begegnen.

Denken Sie nur an die Vorteile, **jedes Mal dasselbe Werkzeug wiederverwenden** zu können.

  • Keine Zeit wird darauf verwendet, zu entscheiden, welches Werkzeug verwendet werden soll.
  • Weniger Zeit wird darauf verwendet, neue Werkzeuge lernen zu müssen.
  • Mehr Zeit, um besser im Umgang mit Ihrem gewählten Werkzeug zu werden.

Ist React also dieses Werkzeug? Ich glaube, es könnte es sein!

Das Komplexitätsspektrum

Zuerst gehen wir auf das häufigste Argument gegen den "React-alles"-Ansatz ein. Ich zitiere Chris direkt:

Ein Blog hat zum Beispiel *wahrscheinlich* keine der Probleme und passt in keine der Szenarien, die React zu einer guten Wahl machen würden. Und weil es keine gute Wahl ist, ist es wahrscheinlich eine *schlechte*, da es komplizierte Technologie und Abhängigkeiten für etwas einführt, das es nicht erfordert.

Das ist fair. Ein einfacher Blog braucht *wahrscheinlich* kein React. Selbst wenn man ein wenig JavaScript benötigt, um ein Anmeldeformular für einen Newsletter zu verknüpfen, kann man einfach jQuery verwenden.

Was ist das? Sie müssen dieses Formular an mehreren Stellen auf verschiedenen Seiten verwenden? Und es nur unter bestimmten Bedingungen anzeigen? Und es auch animieren? Moment mal...

Der Punkt, den ich mit diesem kleinen Szenario machen möchte, ist, dass Komplexität keine Alles-oder-Nichts-Entscheidung ist. Stattdessen leben moderne Websites in einem kontinuierlichen Spektrum, das von einer statischen Seite bis hin zu einer reichhaltigen Single-Page-Anwendung reicht.

Vielleicht ist Ihr Projekt *jetzt* bequem am "einfachen" Ende des Spektrums angesiedelt, aber was ist in sechs Monaten? Ist es nicht besser, eine Technologie zu wählen, die Ihnen Raum zum Wachsen lässt, anstatt eine, die Sie in schlechte Praktiken drängt?

Die Vorteile von React

Vorzeitige Optimierung ist die Wurzel allen Übels.

Eine weitere beliebte Redewendung unter Programmierern. Wer braucht schon einen Hammer und Nägel, wenn Isolierband auch gut funktioniert!

Aber das setzt voraus, dass "vorzeitige Optimierung" ein langer, mühsamer Prozess mit wenigen Vorteilen ist. Und ich glaube nicht, dass das auf React zutrifft.

Auch wenn es einige Zeit dauern kann, sich an React zu gewöhnen, sobald Sie seine Grundkonzepte verstanden haben, werden Sie genauso produktiv sein wie mit klassischen Front-End-Werkzeugen.

Vielleicht sogar mehr, denn React nutzt das extrem leistungsfähige Konzept von **Komponenten**. So wie CSS Sie ermutigt, in wiederverwendbaren Klassen und Stilen zu denken, drängt Sie React zu einer flexiblen, modularen Front-End-Architektur, die Vorteile für jeden Anwendungsfall hat, vom einfachen statischen Homepage bis hin zum interaktiven Back-End-Dashboard.

JavaScript, JavaScript überall

Wir leben in einer JavaScript-Welt. Oder, wie Chris es ausdrückt:

Sie haben Node.js auf der Serverseite. Es gibt unzählige Projekte, die CSS aus dem Mix herausreißen und Stile über JavaScript handhaben. Und mit React ist auch Ihr HTML in JavaScript.

Alles JavaScript! Lang lebe JavaScript!

Chris ist nicht ganz überzeugt, aber ich bin es. JavaScript an sich ist nicht unbedingt perfekt, aber der Zugriff auf das gesamte moderne NPM-Ökosystem ist erstaunlich.

Die Installation eines jQuery-Plugins bedeutete früher, die Homepage zu finden, es herunterzuladen, es in Ihr Projektverzeichnis zu kopieren, einen `<script>`-Tag hinzuzufügen und dann hoffentlich alle paar Monate nach neuen Versionen zu schauen. Heutzutage ist die Installation desselben Plugins als React-Paket nur noch eine einzige npm install-Befehlszeile.

Und mit neuen Bibliotheken wie styled-components wird sogar CSS jetzt widerwillig in die Zukunft gezogen.

Glauben Sie mir, wenn man sich an diese Welt gewöhnt hat, in der alles die gleiche Sprache spricht, ist es schwer, zur alten Vorgehensweise zurückzukehren.

Denkt denn niemand an die Benutzer!

Ich weiß, was Sie denken: Bisher habe ich versucht, Ihnen die Vorteile von React für Entwickler schmackhaft zu machen, aber ich habe sorgfältig jegliche Erwähnung der Endbenutzererfahrung vermieden.

Und das bleibt das Hauptargument gegen moderne Bibliotheken: langsame, JavaScript-überladene Seiten, die ewig brauchen, um nur eine einzige "Ein seltsamer Trick"-Werbung anzuzeigen.

Bis auf ein kleines Geheimnis: **Sie können alle Vorteile von React ohne jegliches JavaScript genießen**!

Wovon ich hier spreche, ist das Rendering von React auf **dem Server**. Tatsächlich ermöglichen Tools wie Gatsby (und bald Next.js) sogar das Kompilieren von React-Komponenten in statische HTML-Dateien, die Sie beispielsweise auf GitHub Pages hosten können.

Als Beispiel ist meine persönliche Website eine Gatsby-generierte React-App, die überhaupt kein JavaScript lädt (abgesehen von einem Google Analytics-Snippet). Ich erhalte alle Vorteile der Verwendung von React in der Entwicklung (alles JavaScript, Zugriff auf das NPM-Ökosystem, styled-components usw.), aber am Ende habe ich ein 100%iges HTML- und CSS-Endprodukt.

Zusammenfassend

Zur Erinnerung, hier sind die vier Gründe, warum ich React für eine gültige Wahl für *jedes* Projekt halte:

  • Es ist wirklich schwer zu garantieren, dass Sie nicht *jemals* interaktive Funktionen wie Tabs, Formulare usw. benötigen werden, selbst für die einfachste Website.
  • Der komponentenbasierte Ansatz von React hat große Vorteile, selbst für statische, inhaltsbasierte Websites.
  • Der Zugang zum modernen JavaScript-Ökosystem ist ein riesiger Vorteil.
  • Moderne Server-Rendering-Tools eliminieren die Nachteile der Verwendung von React für den Endbenutzer.

Was denkst du, Chris? Habe ich einen überzeugenden Fall gemacht? Oder bleiben noch Zweifel in deinem Geist?

Und was ist mit Ihnen, lieber Leser? Ob Sie wie Chris denken, dass jedes Werkzeug seinen Zweck hat, oder ob Sie mir zustimmen, dass die Zeit des Hammers gekommen ist, lassen Sie es uns in den Kommentaren wissen!