Derzeit gibt es mehrere Ansätze zum Erstellen von Webanwendungen:
1. Nur serverseitig
Dies ist ein klassischer Ansatz, bei dem Sie Seiten auf dem Server mit einem Webframework wie Ruby on Rails, Django, Express, Play! Framework und etc.
Typischer Workflow : Erstellen Sie alle Ihre Geschäftslogiken, Modelle und Ansichtsvorlagen auf dem Server im Rahmen Ihrer Wahl.
2. Clientseitige + REST-API
Vor relativ kurzer Zeit hat die gesamte Web-Community damit begonnen, clientseitige Anwendungen in Angular, Backbone, Ember und einigen Dutzend anderer JavaScript MV * -Frameworks zu erstellen. Und jetzt haben wir auch React.js dabei.
UPDATE : Es gibt kein Missverständnis. Was ich nur mit Klientenseite gemeint habe, ist die vollständige Trennung von Bedenken. Sie haben einen REST-API-Server und eine clientseitige Anwendung, die mit diesem Server kommuniziert. Abhängig von Ihrem Anwendungsfall wird es wahrscheinlich nie eine echte clientseitige Anwendung geben, die weder für die Authentifizierung noch für die Datenpersistenz eine Verbindung zu einem Back-End herstellt.
Typischer Workflow : Verbringen Sie Stunden damit, sich für Angular vs. Backbone vs. Ember vs. X zu entscheiden. Dann erstellen Sie Ihre Routen, Modelle, Ansichten und Controller auf dem Client. Nachdem Sie fertig sind, erstellen Sie nun Modelle, Controller und Routen auf dem Server. In gewisser Weise erledigen Sie die doppelte Menge an Arbeit.
3. Hybrid
Ich weiß nicht viel über diesen Ansatz, aber wenn ich raten sollte, rendern Sie Ihre Ansichten (Ansicht des MVC-Frameworks) auf dem Server. Als Ergebnis erhalten Sie SEO-Unterstützung sowie schnellere Seitenaufrufe.
Auf der Hybrid- Front gibt es ein Airbnb- Rendr , das angeblich Backbone und Express miteinander verbindet.
Eric Florenzo hat heute auf seinem Blog gepostet: React: Endlich ein großartiger Server / Client-Webstack .
Die Möglichkeiten zum Erstellen von Webanwendungen sind einfach überwältigend. Und für jemanden, der Webentwicklung lernt, kann dies zu einem Problem werden. Wie entscheidet man sich für einen Ansatz, um die nächste Anwendung zu erstellen?
quelle
Antworten:
Ich denke, Sie haben "Client Side Only" völlig falsch verstanden.
Erstens sollte es mit "Client Centric" gekennzeichnet sein. Dieser ganze Punkt von Frameworks wie Angular ist, dass die "VC" -Teile von MVC vollständig im Browser in Javascript implementiert sind. Die übergeordnete "M" -Logik des "M" -Teils - das Modell - ist im Browser implementiert, und die untergeordnete "CRUD" -Logik ist auf dem Server implementiert.
Die Geschäftslogik wird einmal entwickelt. Die Sichtlogik wird einmal entwickelt. Die Steuerungslogik wird einmal entwickelt - alles im Javascript-Framework Ihrer Wahl. Die Datenzugriffslogik wird ebenfalls nur einmal entwickelt, diesmal jedoch auf jedem RESTy- oder SOAPy-Framework, das Sie auf der Serverseite auswählen.
In extremen Fällen können Sie das Modell vollständig im Client implementieren, wenn es akzeptabel ist, von nur einem Browser auf einem Computer auf die Daten zuzugreifen und die Daten jedes Mal verwerfen zu lassen, wenn die Option "Cookies löschen" ausgewählt wird.
quelle
Die Antwort auf die Frage ist, dass es auf die Anforderungen ankommt. Ein zumindest flüchtiger Blick auf die Geschichte der "Web" -Entwicklung deutet auf eine Cowboy-Kultur hin, in der das Gespräch mit Stakeholdern, Kunden und das Sammeln von Anforderungen oft übersehen wird.
Ich hatte das Glück, vor einigen Jahren an einem Vortrag teilzunehmen, bei dem ich etwas hörte, das mir wirklich in den Sinn kam: "Sie wählen das Design, das den Anforderungen entspricht, nicht die Anforderungen, die dem Design entsprechen." Wenn Sie also mit einer solchen Frage konfrontiert werden, müssen Sie herausfinden, was die Leute, die Sie zum Erstellen dieser Software auffordern, tatsächlich benötigen.
Ihre Aufgabe ist es, die Vor- und Nachteile jedes Ansatzes zu erläutern.
quelle
Ich denke, einer der wichtigsten Punkte der neueren Ansätze und Frameworks ist, dass weniger Kopplung zwischen den Front-End-Technologien und den Back-End-Technologien besteht.
Die Idee ist, dass Sie jedes Framework auf dem Client verwenden und unabhängig vom serverseitigen Framework Daten und / oder Ansichten aus einer beliebigen Anzahl von Quellen abrufen können.
Auf diese Weise können wir die besten Tools für die Erledigung der Aufgabe auswählen und unsere Entscheidungen können unabhängig voneinander getroffen werden.
Zugegeben, ich habe weder Angular noch Backbone verwendet, daher kann ich keine erfahrenen Empfehlungen aussprechen. Mein aktueller Basisstack besteht aus der schlanksten serverseitigen MVC oder aus erholsamen Diensten, die ich finden kann. Meistens Vorlagen und Daten liefern. Die Daten werden clientseitig gerendert und / oder nachfolgende Daten abgerufen, wobei zumeist nur einfaches, altes Javascript, jquery und css verwendet werden.
Ich fange hier an und baue darauf auf, wo ich muss. Die Vorteile dieses Ansatzes liegen auf der Hand, wenn Sie über die Unterstützung mehrerer Clientplattformen nachdenken - Browser, Mobilgeräte usw. Wenn Sie clientspezifisches Rendering benötigen, sollten Sie keine massiven Änderungen auf der Serverseite vornehmen müssen.
quelle