Lesezeit: 3 Minuten

React Server Components und Next.js


Server Side Rendering und React Server Components sind bei der Entwicklung von Web-Applikationen mit React im Trend. In diesem Blog betrachten wir was es mit React Server Components auf sich hat und wie diese mit Next.js genutzt werden können. Um React Server Components besser nachvollziehen zu können, lohnt es sich zunächst den Unterschied zwischen Server Side und Client Side Rendering zu analysieren.

Server Side Rendering

Server Side Rendering (abgekürzt SSR) steht dafür, dass zur Laufzeit der Code auf Seiten des Servers direkt zu HTML gerendert wird. In Abgrenzung dazu gibt es Client Side Rendering (abgekürzt CSR). Dort findet das Rendering des angezeigten HTML erst auf Seiten des Browsers (Client) statt. Beide Strategien haben ihre Vor- und Nachteile. Ein großer Vorteil von SSR ist die bessere Sichtbarkeit bei Suchmaschinen. Dies liegt daran, dass beim SSR das initiale Laden der Anwendung schneller ist und die Suchmaschine die Seite besser indexieren und crawlen kann. Die Vorteile vom CSR hingegen sind, dass CSR umfangreiche Interaktionen unterstützt und der User die Seite bei wiederkehrenden Ereignissen schneller laden kann.  

React Server Components

React Server Components (abgekürzt RSC) sind Komponenten die ausschließlich auf dem Server laufen. Es ist damit eine Form des Server Side Renderings. Das heißt der Server gibt das gerenderte HTML direkt zurück. Die Information wie das HTML gerendert wird, kann der Client dabei nicht zurückverfolgen. Eine RSC wird also nur einmal ausgeführt und nicht wie bei Client Komponenten dynamisch zur Laufzeit neu gerendert. Schauen wir uns an wie der Prozess anhand eines Beispiels aussehen würde. Wenn der User unsere Web-Applikation besucht, werden im Hintergrund aus der Datenbank Daten geladen und dem User werden diese angezeigt. Mit React Server Komponenten würde der Prozess vereinfacht wie folgt aussehen:

 


 

  1.     Der Client schickt eine Anfrage an den Server
  2.     Der Server lädt die Daten aus der Datenbank
  3.     Der Server schickt das HTML gerendert mit den Daten aus der Datenbank an den Client zurück
  4.     Der Client zeigt das gelieferte HTML an

Durch die RSCs schickt der Client nur einen Request an den Server. Der Server lädt die Daten selbst, liefert diese aus und muss keinen zusätzlichen Backend Request abschicken. Die JavaScript Logik wird dabei minimal gehalten und die Information, woher die Daten bezogen werden, wird nicht nach außen gegeben.

Grundsätzlich ist für die Verwendung von RSCs kein Framework notwendig, da RSCs ein Feature von React sind. Um RSCs statisch umzusetzen kann beispielsweise ein Node.js Server implementiert werden, der eine gebaute React Server Komponente zu HTML rendert und dem Client auf Anfrage ausliefert.

React Server Komponenten können aber für weitaus mehr genutzt werden als zum Generieren von statischen HTML. Zum Beispiel bietet React die Möglichkeit mit einer Suspense Komponente zu arbeiten. Diese ermöglicht die Implementierung eines Fallbacks der einen bestimmten Seiteninhalt ausliefert und solange angezeigt wird, bis die Server Komponente fertig geladen wurde. Um Suspense ohne Framework zu implementieren, müsste mit HTML Streams gearbeitet werden. Das statische Rendern reicht hierfür nicht mehr aus. Dadurch, dass mit der Implementierung die initiale Logik komplexer wird und viel Boilerplate Code geschrieben werden müsste, empfiehlt es sich dafür Meta Frameworks wie Next.js zu verwenden. 

RSCs und Next.JS

Next.js ist eines der beliebtesten Meta Frameworks, um React Anwendungen mit serverseitigem Rendering umzusetzen. In Next.js wurden RSCs integriert. Außerdem übernimmt es die Implementierung des HTML Streaming für den Entwickler. Darüber hinaus besitzt Next.js weitere nützliche Features. Unter anderem ist es mit diesem möglich, dass Server Komponenten Client Komponenten rendern können. Dadurch ist die Implementierung der RSCs mit Next.js deutlich einfacher umsetzbar.

In Next.js wird der Ansatz verfolgt, dass alle Komponenten standardmäßig erstmal Server Komponenten sind. Es muss also nichts getan werden, außer eine React Komponente zu schreiben, um RSCs zu implementieren. Darüber hinaus hat der Entwickler trotzdem die Möglichkeit clientseitige Logik zu implementieren. Hierfür muss die Komponente mit der Direktiven „use client“ deklarieren werden. Erst dann kann Logik für den Client implementiert werden.

Möchte der Entwickler Daten aus einem Backend laden kann dieser eine Server Komponente als "async" deklarieren und kann dann mit der aus dem JavaScript Umfeld gewohnten async/ await Syntax arbeiten. Ein Beispiel könnte wie folgt aussehen.

In diesem Beispiel lädt die Server Komponente zunächst das Heading, welches angezeigt werden soll, aus der Funktion loadHeading. Erst wenn das Heading zur Verfügung steht rendert der Server dieses in den h1-Tag. Sobald dieser Prozess erledigt wurde, wird das HTML gerendert an den Client zurückgeschickt. 

Server Komponenten können Client Komponenten importieren. Umgekehrt geht das nicht. Importiert eine Client Komponente eine Server Komponente macht Next.JS aus ihr ebenfalls eine Client Komponente. Es ist aber möglich eine Server Komponente als ein Prop einer Client Komponente zu übergeben und diese als Child Komponente zu rendern. Im folgenden Beispiel sehen wir eine Grafik, die den Komponenten Aufbau einer Anwendung beschreiben könnte:


Hier hat die Komponente B die Direktive "use client". Dadurch werden die importierten Komponenten C und D neben der Komponente B auch zur Client Komponente. Wie wir sehen, bildet sich ein Bereich des Komponenten Baums in dem nur clientseitig gerendert wird. Während der Entwicklung sollte deswegen die Komponentenstruktur danach ausgerichtet werden, welchen Part der Anwendung der Server und welchen der Client rendern soll.

Zusammenfassung

In diesem Blog wurden die Begriffe Server Side Rendering und React Server Components erläutert. RSCs ermöglichen es React Komponenten auf dem Server zu rendern. Des weiteren wurde die Umsetzung von React Server Komponenten in Next.js betrachtet. Dabei wurde festgestellt, dass Next.js serverseitige sowie clientseitige Komponenten standardmäßig unterstützt. Somit vereint es die Vorteile aus beiden Welten. Sobald umfangreiche clientseitige Operationen bei einer Komponente notwendig sind, lohnt es sich, clientseitige Komponenten zu verwenden. Für die Komponenten, die initial nur einmal Daten laden müssen und keine weiteren Client-Interaktionen benötigen, bieten sich Server-Komponenten an. Dadurch kann die initiale Ladegeschwindigkeit der Anwendung und die Sichtbarkeit in Suchmaschinen verbessert werden.

Blogautor

Sebastian von Werder
Softwareentwickler ARS Computer und Consulting GmbH
Ihr Erfolg ist unser Ziel

Stehen Sie vor komplexen IT-Projekten? Mit unserer Expertise bieten wir Ihnen maßgeschneiderte Lösungen. Erfahren Sie mehr.

Werde Teil unseres Teams

Wir suchen ständig nach neuen Talenten. Für dich haben wir genau die richtige Stelle. Schau dir unsere offenen Positionen an.

Noch Fragen? Wir helfen Ihnen gerne!

Blog 05.08.23

NextJS - der Gamechanger für deine Web Performance

In diesem Blogbeitrag erfährst du, wie du mit NextJS das Maximum aus deiner Web Plattform herausholen kannst. Entdecke, warum diese Technologie die Web-Performance revolutioniert und was du tun kannst, um die Nutzererfahrung zu verbessern, deine Absprungraten zu reduzieren und deine Konversionsrate zu erhöhen.

Webinar on demand 20.11.20

Server-Side Tracking in Zeiten von EU-Privacy Shield und ITP

In unserem Web-Seminar stellen wir dir vor, welche Möglichkeiten Server-Side Tracking im Kontext der allgegenwärtigen Datenschutzproblematik bietet.

Blog 06.11.23

Hurra, hurra - Angular Version 17 ist da!

Erfahren Sie, welche aufregenden neuen Funktionen und Verbesserungen Angular Version 17 mit sich bringt. Von der neuen deklarativen Control Flow Syntax bis hin zum Deferred Loading und vielem mehr - Angular 17 revolutioniert die moderne Webentwicklung. Lesen Sie mehr auf unserem Blog!

Header zu Fullstack Development
Service

Mit Fullstack Development alles aus einer Hand

Der Trend in der Softwareentwicklung geht zur Full Stack-Entwicklung. Full Stack-Entwickler*innen sind Programmierer*innen, die sowohl in der Frontend- als auch Backendentwicklung tätig sind und dadurch Kompetenzen im Bereich von Datenbanken, Servern, Systemen und Clients besitzen.

Produkt

SQL Server

Sammeln, organisieren und stellen Sie Ihre Daten beliebig wieder bereit mit dem SQL Server von Microsoft.

Produkt

BizTalk Server

Microsoft BizTalk Server sorgt für die Vernetzung der verschiedenen Systeme und Prozesse im Unternehmen und ermöglicht dadurch eine nahtlose Integration.

Laptop auf Tisch
News 04.09.20

HCL Newsflash September 2020

Lesen Sie regelmäßig wichtige Informationen zu den HCL Digital Solutions - Updates, Fixes und wichtige Ankündigungen, vom TIMETOACT HCL Team zusammengefasst.

Referenz

Gustav Ehlert: Composable Commerce für die digitale Zukunft

synaigy modernisiert B2B-Webshop und Corporate Website – Maßgeschneiderte Headless-Lösung für optimale Customer Experience und datengetriebene Commerce-Strategien.

Nomadensiedlung
Blog 27.09.21

HCL Nomad Web im Verbund mit HCL SafeLinx

Mobilität für HCL-Domino-Anwendungen. Was Sie über HCL Nomad Web und die HCL SafeLinx-Installation wissen müssen.

2023 Referenz IAM Teaserbild SID
Success Story

Elimination of data clutter through identity management.

This is how we create transparency, efficiency, and say goodbye to data clutter. Find out how our experts are making history with SID. Read more about it.

Event Archive 12.05.23

Domino Anwendung modernisieren oder ablösen

Erfahren Sie im Webinar, wie Sie erfolgreich HCL Domino Notes modernisieren oder ablösen können.

Services für den WebSphere Process Server
Technologie

WebSphere Process Server

Umfassend ausgestattete Prozessintegrationsplattform für Unternehmensservices auf der Basis einer serviceorientierten Architektur (SOA).

Headerbild zu Microsoft SQL Server
Technologie

Microsoft SQL Server

SQL Server 2019 bietet Unternehmen anerkannt gute und umfangreiche Funktionen für den Aufbau einer analytischen Lösung. Sowohl Datenintegration, Speicherung, Analyse und Reporting lassen sich realisieren, durch die enge Integration von PowerBI lassen sich umfangreiche Visualisierungen erstellen und Daten an die Konsumenten geben.

Helikopter auf dem Gletscher
Blog 12.02.21

Support-Update von HCL

Für welche Produkte wird HCL weiterhin Support leisten? Hier die Ankündigungen zu Domino, Notes und Sametime 9.0.x und 10.0.x.

Navigationsbilc zu Application Development
Service

Application Development für Individualsoftware

Application Development bzw. Anwendungsentwicklung bezeichnet den Vorgang eine oder mehrere Anwendungen zu verändern, zu konzipieren und / oder zu entwickeln. So lassen sich Lücken in der Softwarelandschaft schließen, indem Anwendungen individuell auf den Kunden zugeschnitten werden.

Server-Landschaft
Wissen

WebSphere Process Server Administration

WebSphere Process Server (WPS) basiert auf dem WebSphere Application Server (WAS) Stack. Allerdings benötigt der Betrieb von WPS Anwendungen mehr als reine WAS Administrator Kenntnisse. Dieser Blogartikel informiert Sie über die genauen Anforderungen.

Headerbild zum Ende der Server Neulizenzierung bei Atlassian
News

Ende der Server Neulizenzierung bei Atlassian

Ab Februar 2021 wird der Verkauf neuer Serverlizenzen, in den Folgejahren sukzessive Upgrades und deren Wartung eingestellt.

Headerbild zu IBM Netezza Performance Server
Technologie

IBM Netezza Performance Server

Die IBM bietet Datenbanktechnologie für spezifische Zwecke auch in Form von Appliance Lösungen an. Im Data Warehouse Umfeld bekannt ist vor allem die Netezza Technologie, später unter dem Namen „IBM PureData for Analytics“ vermarktet.

Tippen auf Tastatur
Wissen

Best Practices für die Einarbeitung in Connect:Direct

Anhand eines konkreten Kundenszenarios stellt dieser Artikel vor, wie eine Konfiguration aussehen kann und was bei der Einrichtung von Connect:Direct Clients und Servern zu berücksichtigen ist. Dieses Szenario bezieht sich auf IBM Sterling Connect:Direct für UNIX.

Wissen

IBM ODM Decision Server Insights

Mit dem neuen Tool IBM Decision Server Insights (DSI), basierend auf IBM Operational Decision Manager (ODM), bietet IBM eine leistungsstarke Möglichkeit, große Daten besser zu verwalten und in Echtzeit auszuwerten. Dieser Blogartikel fasst wertvolle Insights zum Thema zusammen.

Bleiben Sie mit dem TIMETOACT GROUP Newsletter auf dem Laufenden!