React zu einem bestehenden Projekt hinzufügen
Wenn dein bestehendes Projekt lediglich interaktiver werden soll, ist es nicht nötig es vollständig neu in React zu scheiben. Du kannst React einfach hinzufügen und interaktive Komponenten rendern
React für eine ganze Subroute einer bestehenden Webseite nutzen
Lass uns annehmen, du hast eine bestehende Webseite auf example.com
die mit einer anderen Servertechnologie (z.B. Rails) erstellt wurde und du willst nun alle
Routen die mit example.com/some-app/
beginnen vollständig mit React implementieren
dann würden wir empfehlen, das wie folgt einzurichten:
- Erstelle den Teil der in der App mit React umgesetzt weren soll indem du eines der auf React basierenden Frameworks benutzt.
- Definiere
/some-app
als base path in der Konfiguration deines Framework’s (so geht’s: Next.js, Gatsby). - Konfiguriere deinen Server oder Proxy so, dass alle Anfragen (requests) an
/some-app/
von der React Anwendung behandelt werden.
Damit ist sichergestellt, dass der React Teil der Anwendung von den best practices, die in diese Frameworks bereits eingebaut sind, profitieren kann.
Viele der auf React basierenden Frameworks sind Fullstack und ermöglichen es deiner Anwendung den Server zu nutzen. Man kann den gleichen Ansatz aber auch dann verwenden, wenn man auf dem Server kein JavaScript ausführen kann oder will. In diesem Fall wird stellt man den HTML/CSS/JS export (next export
Output für Next.js, default für Gatsby) unter /some-app/
bereit.
React für Teile einer bestehenden Seite nutzen
Lass uns annehmen du hast eine Seite mit einer anderen technologie erstellt (entweder ein Server wie Rails oder ein Client wie Backbone) und du willst nun eine irgendwo auf der Seite eine interaktive React Komponente einfügen. Das ist eine übliche Methode um React zu integrieren — tatsächlich ist es die Methode wie React in den meisten Anwendungsfällen über viele Jahre bei META benutzt benutzt wurde.
Du kannst das in zwei Schritten erreichen:
- JavaScript Umgebung einrichten damit man die JSX syntax verwenden kann, um Code mit der
import
/export
Syntax in Module aufzuteilen und um Pakete (wie z.B. React) aus der npm Registry zu nutzen - Rendere deine React Komponenten irgendwo in der Anwendung um sie auf der Seite sichtbar zu machen.
Die genaue Vorgehensweise hängt vom Setup deiner bestehenden Seite ab. Wir müssen uns deshalb noch ein paar Details ansehen
Schritt 1: Eine modulare JavaScript Umgebung einrichten
Eine modulare Javascript Umgebung ermöglicht es, jede React Komponente in eine Eigene Datei zu schreiben, anstatt den gesamten Code in eine Datei zu schreiben.
Sie ermöglicht uns ausserdem, die unzähligen, nützlichen Pakete aus der npm Registry zu nutzen die andere Entwickler veröffentlich haben. — inklusive React selbst!
Die Einrichtung hängt vom bestehenden Setup ab:
-
Wenn die Anwendung bereits in Dateien aufgeteilt ist die
import
Statements benutzen versuche den Setup zu verwenden den du bereits hast. Schreib in deinen JS Code ein<div/>
und prüfe ob das einen Syntaxfehler verursacht. Sollte dabei ein Syntaxfehler auftreten musst du deinen Code vermutlich mit Babel umwandeln und zudem die Babel React Voreinstellung einschalten um JSX nutzen zu können -
Wenn die Anwendung noch nicht für das kompilieren von JavaScript Modulen eingerichtet ist, richte es mit Vite ein. Die Vite Community pfelgt viele Integrationen mit Backend Frmeworks, darunter Rails, Django und Laravel. Falls dein Backend Framework nich aufgelistet ist folge dieser Anleitung um Vite manuell in dein Backend einzubinden
Um zu prüfen ob die Einrichtung erfolgreich war führe im Projektordner folgenden Befehl aus:
danach füge diese Codezeilen am Beginn deiner main JavaScript Datei aus (die Datei heisst meistens index.js
oder main.js
)
import { createRoot } from 'react-dom/client'; // löscht den vorhandenen HTML-Inhalt document.body.innerHTML = '<div id="app"></div>'; // und rendert stattdessen die React Komponente const root = createRoot(document.getElementById('app')); root.render(<h1>Hallo, Welt</h1>);
Wenn der komplette Inhalt deiner Seite durch “Hallo, Welt” ersetzt wurde hat alles richtig funktioniert! Lies weiter
Schritt 2: React Komponenten an beliebiger Stelle auf der Seite rendern
Im vorhergehenden Schritt hast du diesen Code ganz oben in der main Datei eingesetzt:
import { createRoot } from 'react-dom/client';
// löscht den vorhandenen HTML-Inhalt
document.body.innerHTML = '<div id="app"></div>';
// und rendert stattdessen die React Komponente
const root = createRoot(document.getElementById('app'));
root.render(<h1>Hello, world</h1>);
Natürlich will man den vorhandenen HTML-Inhalt nicht wirklich löschen ! Lösche diesen Code.
Vermutlich willst du stattdessen deine React Komponente an einer bestimmten Stelle in deinem HTML rendern. Öffne dazu die HTML-Seite (oder die Server Templates die diese generieren) und füge ein einzigartiges id
Attribut zu einem beliebigen Element hinzu, zum Beispiel:
<!-- ... irgendwo in deinem html ... -->
<nav id="navigation"></nav>
<!-- ... mehr html ... -->
Dieser Code wählt das HTML Element mit document.getElementById
aus und reicht es an createRoot
weiter. Auf diese Weise kannst du deine React Komponente innerhalb des Elements mit der id rendern:
import { createRoot } from 'react-dom/client'; function NavigationBar() { // TODO: implementiere eine Navigationsleiste return <h1>Hallo von React!</h1>; } const domNode = document.getElementById('navigation'); const root = createRoot(domNode); root.render(<NavigationBar />);
Beobachte wie hier der ursprüngliche HTML Inhalt aus der index.html
erhalten bleibt, während deine eigene NavigationBar
React Komponente jetzt innerhalb des <nav id="navigation">
Elements deines HTML Markups erscheint. Lies in der createRoot
Dokumentation wenn du mehr über das Rendern von React Komponenten innerhalb bestehender HTML-Seiten lernen willst
Wenn man React in ein bestehendes Projekt übernimmt ist es üblich mit kleinen interaktiven Komponenten (wie Buttons) zu beginnen und sich dann zu komplexeren Komponenten zu steigern bis am Ende eventuell die gesamte Seite aus React besteht.
When you adopt React in an existing project, it’s common to start with small interactive components (like buttons), and then gradually keep “moving upwards” until eventually your entire page is built with React. Sollte dieser Punkt erreicht sein, empfehlen wir direkt danach die Migration zu einem React Framework vozunehmen um das meiste aus React herauszuholen.
React Native in einer bestehenden Native Mobile App nutzen
React Native kann auch schrittweise in bestehende Native Apps integriert werden. Wenn du eine bestehende Native App für Android (JAVA oder Kotlin) oder iOS (Objective-C oder Swift) hast, folge dieser Anleitung um einen React Native Screen hinzuzufügen