Ich habe diese Technik ausschließlich für eine Webanwendung verwendet, an der wir arbeiten. Mein Backend wird mit dem Java SDK in Google App Engine gehostet, und mein Frontend verwendet HTML, CSS und JavaScript (mit jQuery).
Das Projekt ist kleiner, nur ich und ein Webdesigner, und wir sind beide der Meinung, dass diese Methode uns geholfen hat, viel schneller zu arbeiten und etwas schneller auf den Markt zu bringen.
Vorteil: Arbeiten mit Webdesignern
Der Hauptvorteil dieser Technik besteht darin, dass der Webdesigner, der einige PHP-Kenntnisse besitzt, sich aber nicht als Programmierer versteht, ohne großen Aufwand in HTML und CSS arbeiten kann, ohne sich durch unzählige Zeilen mit JSP, Taglib-Tags und anderen serverseitigen Elementen wühlen zu müssen Ein Markup, das uns seit Jahren mitgeteilt wurde, soll das Leben eines Front-End-Entwicklers erheblich erleichtern.
Ohne das gesamte serverseitige Markup waren wir agiler. Der Webdesigner hat sein ursprüngliches Design direkt drei- oder viermal ausgetauscht und überarbeitet, wobei ich nur sehr wenige Änderungen vorgenommen habe.
Sein Kommentar für mich war, dass er das Gefühl hatte, dass HTML lebendig ist, indem er es bearbeiten und dann sofort die Änderungen auf seinem Computer mit dynamischen Daten sehen kann. Dies hat für uns beide den Vorteil, dass die Integration größtenteils automatisch erfolgt.
Serverseitiger Code und HTML / CSS-Übergaben
In früheren Projekten musste er den HTML- und CSS-Code an Java-Entwickler übergeben, die dann seinen HTML- und CSS-Code mithilfe der JSP-Technologie vollständig neu schreiben. Dies würde viel Zeit in Anspruch nehmen und in der Regel geringfügige, aber wichtige Unterschiede beim tatsächlichen Rendering der Seiten sowie bei der Validierung im W3C-Validator zur Folge haben.
Insgesamt sind wir beide sehr zufrieden mit dieser Technik und ich habe immer noch keine JSP-Seiten oder serverseitigen Code in meinen HTML-Seiten.
Fallstricke der REST / JSON-Technik
Die vielleicht größten Gefahren sind die, denen wir noch nicht begegnet sind. Ich gehe davon aus, dass es zu Meinungsverschiedenheiten mit erfahreneren Java-Entwicklern kommen wird, die von den Aussagen der Apache Foundation und des Spring-Teams über die Vereinfachung der Arbeit von Frontend-Entwicklern mit dem Code durch Tag-Bibliotheken einer Gehirnwäsche unterzogen wurden. Ich gehe davon aus, dass es mit der Erweiterung dieses Projekts eine Lernkurve geben wird, und wir stellen uns weiteren Entwicklern, die möglicherweise diese veralteten Techniken verlernen müssen, die meiner Erfahrung nach die Arbeit der Webdesigner erschwert haben .
Eine weitere Gefahr besteht darin, dass der JavaScript-Code sehr umfangreich geworden ist. Dies ist eher ein Problem, vielleicht weil ich diese Technik zum ersten Mal verwende und weil wir ein paar technische Probleme auf dem Weg zu einer schnellen Veröffentlichung haben. Vielleicht hätte die Auswahl eines besseren Frameworks dazu beigetragen, einen Großteil des Codes zu reduzieren. Meiner Meinung nach war nichts davon ein Showstopper, und ich bin ermutigt, diese Technik weiterhin zu verwenden und meine Fähigkeiten in diesem Bereich zu verfeinern.
Vorteil: Andere Anwendungen können auf der Plattform erstellt werden
Zuletzt sollte ich einen versteckten Vorteil erwähnen. Da es einen guten Grad an Trennung zwischen meinen RESTful-Webdiensten im Backend und meinem Frontend gibt, habe ich auch eine Plattform erstellt, die ich problemlos erweitern kann.
Einer unserer Mitarbeiter wollte einen Proof of Concept in einer anderen Anwendung testen, und dank meiner RESTful-Services konnten wir ein völlig anderes Frontend für die Anwendung erstellen, um ein völlig anderes Problem zu lösen. Der schnell entwickelte Proof of Concept verwendete eigenes HTML, CSS und JavaScript, verwendete jedoch die RESTful-Services als Backend und Datenquelle.
Am Ende sah ein anderer Projektmanager, was ich getan hatte, und es wurde sofort klar, dass das Feature mehr als nur ein Proof of Concept sein musste, und sein Team implementierte es.
Ich kann nicht genug betonen, wie wiederverwendbar diese Architektur ist, sowohl auf Anwendungsebene als auch auf HTML / CSS / JavaScript-Ebene, und ich würde Sie auf jeden Fall ermutigen, dies in Ihrem nächsten Projekt zu versuchen.