Ich nähere mich dem Ende einer Prototyping- / Proof-of-Concept-Phase für ein Nebenprojekt, an dem ich arbeite, und versuche, einige größere Entscheidungen für das Anwendungsdesign zu treffen. Die App ist ein Projektmanagementsystem, das stärker auf den agilen Entwicklungsprozess zugeschnitten ist. Eine der Entscheidungen, die ich treffen muss, ist, ob ich mich für eine herkömmliche mehrseitige Anwendung oder eine einseitige Anwendung entscheide.
Derzeit ist mein Prototyp ein traditionelles mehrseitiges Setup. Ich habe jedoch backbone.js untersucht, um meinen Javascript-Code (jQuery) zu bereinigen und strukturieren. Es sieht so aus, als ob backbone.js in mehrseitigen Anwendungen verwendet werden kann, während es in einseitigen Anwendungen mehr zur Geltung kommt. Ich versuche, eine Liste mit Vor- und Nachteilen für die Verwendung eines Ansatzes für das Design von Einzelseitenanwendungen zu erstellen. Bisher habe ich:
Vorteile
Alle Daten müssen über eine API verfügbar sein - dies ist ein großer Vorteil für meinen Anwendungsfall, da ich ohnehin eine API für meine Anwendung haben möchte. Derzeit werden ca. 60-70% meiner Aufrufe zum Abrufen / Aktualisieren von Daten über eine REST-API ausgeführt. Wenn ich nur eine Seite anwende, kann ich meine REST-API besser testen, da sie von der Anwendung selbst verwendet wird. Dies bedeutet auch, dass die API selbst wächst, wenn die Anwendung wächst, da dies von der Anwendung verwendet wird. Die API muss nicht als Add-On für die Anwendung verwaltet werden.
Reaktivere Anwendung - Da alle nach der ersten Seite geladenen Daten auf ein Minimum beschränkt und in einem kompakten Format (wie JSON) übertragen werden, sollten Datenanforderungen im Allgemeinen schneller sein und der Server wird etwas weniger verarbeiten.
Nachteile
- Vervielfältigung von Code - zum Beispiel Modellcode. Ich werde Modelle sowohl auf der Serverseite (in diesem Fall PHP) als auch auf der Clientseite in Javascript erstellen müssen.
- Geschäftslogik in Javascript - Ich kann keine konkreten Beispiele dafür nennen, warum dies schlecht wäre, aber es fühlt sich für mich einfach nicht richtig an, Geschäftslogik in Javascript zu haben, die jeder lesen kann.
- JavaScript-Speicherlecks - Da die Seite nie neu geladen wird, können JavaScript-Speicherlecks auftreten, und ich würde nicht einmal wissen, wo ich mit dem Debuggen beginnen soll.
Es gibt auch andere Dinge, die Art von zweischneidigen Schwertern sind. Beispielsweise können bei Einseitenanwendungen die für jede Anforderung verarbeiteten Daten viel geringer sein, da die Anwendung nach den Mindestdaten fragt, die für die jeweilige Anforderung erforderlich sind. Dies bedeutet jedoch auch, dass möglicherweise eine viel kleinere Anforderung erforderlich ist der Server. Ich bin mir nicht sicher, ob das gut oder schlecht ist.
Was sind einige der Vor- und Nachteile von Webanwendungen für einzelne Seiten, die ich berücksichtigen sollte, wenn ich mich für ein Projekt entscheide?