Der Grund ist Stabilität .
Auf der Serverseite kann ich stabile Komponenten auswählen. Normalerweise bedeutet dies, dass ich mich für Java und eine Reihe sehr sorgfältig ausgewählter Bibliotheken wie FreeMarker entscheide. Selbstverständlich wird jede Bibliothek außer den Standardbibliotheken von Java als Einwegbibliothek behandelt, sodass ich über einen selbst erstellten Wrapper auf die externen Bibliotheken zugreifen kann. Dies bedeutet, dass ich bei Bedarf problemlos von einer Bibliothek in eine andere wechseln kann.
Jedes Mal, wenn ich Java auf eine neue Version aktualisiere, funktioniert dies normalerweise gut, da Java eine äußerst stabile Komponente ist, selbst bei größeren Versionsaktualisierungen. Außerdem läuft auf jedem Server die gleiche Java-Version. Nicht auf jedem Client wird dieselbe JavaScript-Implementierung ausgeführt.
Auf der Clientseite kann ich keine stabilen Komponenten auswählen. Die Browser-Hersteller werden mich zwingen, JavaScript zu wählen, eine Sprache, die ich nicht besonders mag, aber die ich zwingen muss. (Und erzähl mir nichts über Sprachen, die mit JavaScript kompiliert wurden, sie sind schrecklich!) Die JavaScript-Implementierung jedes Browsers ist anders. Das heißt, es ist eine Hölle, mein Produkt mit jeder unterstützten Browserversion zu testen.
Meine Lösung? Ich führe auf der Serverseite so viel Verarbeitung wie möglich durch, und auf der Clientseite handelt es sich nur um einen kompakten Wrapper, der Daten an den Server sendet und Daten vom Server in Form von JSON- und HTML-Fragmenten empfängt. Vermeiden Sie XML. Verwenden Sie stattdessen JSON.
Ich mache kein clientseitiges Templating. Ich rendere den Inhalt auf dem Server zu einem HTML-Fragment, das ich dann mit der.innerHTML
Attributs verschiedenen Platzhalterelementen auf der Clientseite zuordnete. Dies hält den Technologie-Stack so einfach wie möglich, da ich keine zwei Template-Engines benötige (eine Java- und eine JavaScript-Engine).
Der Nachteil ist offensichtlich die Lichtgeschwindigkeits-Latenzzeit; Eine halbe Sekunde Latenz ist zwischen den Kontinenten keine Seltenheit.
Denken Sie daran, dass Ihre Kunden heutzutage möglicherweise Smartphones sind. Smartphones haben eine begrenzte Akkulaufzeit. Wenn Sie also viel rechnen, sollten Sie sie besser auf Ihre Server auslagern. Einfache Dinge können jedoch energieeffizienter sein, wenn sie auf der Clientseite ausgeführt werden, da Sie dann den Funkzugriff vermeiden können. Aber das Hauptargument, Stabilität, kann bedeuten, dass es tatsächlich Sinn macht, auch einfache Berechnungen auf den Server zu verlagern.
Als Ergänzung erhalten Sie, wie in einigen Antworten bereits erwähnt, auch Sicherheit . Wenn die Anwendungslogik vollständig auf der Clientseite liegt, kann jemand z. B. einen Preis für das festlegen, was er in Ihrem Online-Webshop kaufen möchte.