Ist React tauglich für sehr große Webapplikationen?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Du hast schon recht damit, dass die Anwendung die ja auf dem Client gerendert wird erst mal geladen werden muss. Danach gibt es natürlich Vorteile, da der Inhalt ja dann dynamisch geladen werden kann und hier potenziell weniger geladen werden muss als bei klassischen Websites.

Allerdings kann man React Apps schon aufsplitten und Componenten dynamisch nachladen. Schau dafür am besten mal hier: https://reactjs.org/docs/code-splitting.html

Da ich bisher eher mit anderen Frameworks gearbeitet habe, in denen der initiale Load tatsächlich teils ein Problem war bei größeren Anwendungen, kann ich zu react spezifisch wenig sagen.

Meiner Meinung nach haben Single Page Applications trotzdem bei komplexen Anwendungen ganz klar einen Platz.

Woher ich das weiß:Berufserfahrung – Software Entwickler / Devops

Nein. Bei React werden JavaScripts, welche den Webseiteninhalt generieren, an den Client geschickt + Stylesheets und statische Ressourcen (z.B. Bilder). Diese Scripts bauen die Seiten dynamisch auf dem Client auf und rufen Inhalte ggf. dynamisch vom Server ab (z.B. per REST Service). Mittels React Routers können auch Webseitenstrukturen gebildet werden mit URLs, auf die man verlinken kann. Aus Sicht des Benutzers ist es also prinzipiell eine normale Webseite, die sich aber viel flüssiger und "aus einem Guss" anfühlt.

Weiterhin teilt man in React die Seite in Components auf. Jede Component ist prinzipiell autark und kann sich selbst aktualisieren - und eben nur sich selbst, nicht auch den Rest der Seite.

Dies hat den Vorteil, dass Abrufe von Daten ohne vollständige Roundtrips zum Server sehr schnell läuft, da immer nur die Teile der Webseite aktualisiert werden, auf denen sich auch etwas ändert.

Der Roundtrip zum Server hat eben den Nachteil, dass a) immer eine neue http(s)-Anfrage gestellt wird, der Server (und dort vermutlich irgendeine Scriptsprache) die Aufbereitung des HTML machen muss und das dann an den Client geschickt wird, wo ein vollständiges Update der Seite stattfindet. Das dauert und schafft nicht den Eindruck, dass man "in der Anwendung" bleibt.

um Reaktionszeiten zu reduzieren und bestimmte Inhalte eben nur bei Bedarf abzurufen?

Genau das ist, was React tut und was im klassischen Ansatz nicht geht.

BeamerBen  28.10.2021, 17:27

Es geht darum dass der Code der die App Clientside rendert auf ein mal geladen muss, das führt zu einem großen initialen load der Anwendung. Ich denke du hast die Frage falsch verstanden.

0
ohwehohach  28.10.2021, 19:55
@BeamerBen

Nein, ich hab die schon richtig verstanden. Im Endeffekt ist das einmalige Laden des Codes aber weniger schmerzhaft als permanente roundtrips. Und JavaScript im Browser ist halt echt schnell. Daher wirkt die Seite viel mehr „responsive“ als sonst.

0
BeamerBen  29.10.2021, 00:41
@ohwehohach

Du gehst aber darauf nicht ein, er hat aber recht das initialer load bei großen Apps durchaus nicht immer optimal ist.

Erinnere mich da an ne legacy admin anwendung für ein komplexes system. Wäre definitiv, wenn man nur mal schnell was anpassen wollen würde, mehr responsive gewesen mit klassischen Seiten. Oder man hätte den Code besser aufteilen müssen.

Das lustige war, je mehr rechte man hatte desto länger dauerte der load, aber da lief noch mehr schief als großer initaler load.

0
ohwehohach  29.10.2021, 10:05
@BeamerBen

Naja, man muss halt abwägen, welche Art von Seite sinnvoll ist. Nicht jede Web-Anwendung ist auch unbedingt für einen Single-Page Ansatz geeignet. Und dann kommt es durchaus auf das Framework an, das man verwendet.

Bei React konnte ich jetzt noch nicht feststellen, dass das ein großes Problem war. Bei den Microsoft Blazor muss tatsächlich noch sehr viel Framework zusätzlich zur eigentlichen Anwendung heruntergeladen werden - das ist eigentlich nur im Intranet sinnvoll verwendbar. Sonst dauert es wirklich einfach viel zu lang. Auch hier haben aber Verbesserungen Einzug gehalten.

Und es ist schon auch eine Caching-Frage - normalerweise sollte es so sein, dass nicht bei jedem Besuch alles runtergeladen werden muss, sondern nur beim ersten Besuch.

0

Ist React nicht das Framework von Facebook? Glaube Du hast da etwas missverstanden, eine SPA lädt nicht zwingend alles auf einmal.