What is a single page application (SPA) template?

Single Page Application (SPA) Templates: Eine Übersicht

28/11/2023

Rating: 3.97 (2811 votes)

In der heutigen digitalen Landschaft sind schnelle, reaktionsfähige und nahtlose Webanwendungen gefragter denn je. Single Page Applications (SPAs) haben sich als eine führende Architektur für die Bereitstellung solch herausragender Benutzererfahrungen etabliert. Im Gegensatz zu herkömmlichen Multi-Page-Anwendungen, die bei jeder Interaktion eine vollständige Neuladung der Seite erfordern, laden SPAs nur ein einziges HTML-Dokument und aktualisieren Inhalte dynamisch über JavaScript-APIs. Dies führt zu einer flüssigeren Navigation, die sich anfühlt wie die Nutzung einer nativen Desktop-Anwendung.

Why should you use spa?
When the content needs to be updated, the SPA does it through JavaScript APIs. This way, users can view a website without loading the entire new page and data from the server. As a result, performance increases, and you feel like using a native application. It offers a more dynamic web experience to the users.

ASP.NET Core bietet mit seinen integrierten Templates für JavaScript- und TypeScript-Frontends eine leistungsstarke Grundlage für die Entwicklung von SPAs. Diese Templates, die in Visual Studio 2022 (Version 17.8 oder höher) verfügbar sind, vereinfachen den Entwicklungsprozess erheblich, indem sie die Integration von beliebten JavaScript-Frameworks wie Angular, React und Vue mit einem robusten ASP.NET Core Backend ermöglichen. Sie sind darauf ausgelegt, eine optimierte Entwicklungsumgebung zu schaffen, die sowohl effizientes Debugging als auch eine reibungslose Bereitstellung gewährleistet.

Inhaltsverzeichnis

Architektur von Single Page Application Templates

Die SPA-Templates für Angular und React sind so konzipiert, dass sie eine nahtlose Entwicklungserfahrung bieten, indem sie die Frontend-Anwendung innerhalb eines .NET-Backend-Servers hosten. Diese Architektur unterscheidet sich grundlegend zwischen der Entwicklungs- und der Veröffentlichungsphase:

Während der Entwicklung

In der Entwicklungsphase ist die Anwendung so konfiguriert, dass sie einen Frontend-Proxy verwendet. Wenn die Anwendung gestartet wird, öffnet sich die index.html-Seite im Browser. Eine spezielle Middleware, die nur in der Entwicklungsumgebung aktiviert ist, fängt eingehende Anfragen ab, prüft, ob der Proxy läuft, und leitet bei Bedarf zum Proxy-URL um oder startet eine neue Instanz des Proxys. Dies stellt sicher, dass sowohl das Frontend als auch das Backend gleichzeitig und korrekt kommunizieren können. Der Proxy ist dafür verantwortlich, bestimmte Anfragen (z.B. an Backend-Endpunkte wie /weatherforecast) transparent an den ASP.NET Core-Server weiterzuleiten, während andere Anfragen vom Frontend-Entwicklungsserver selbst verarbeitet werden.

Nach der Veröffentlichung

Wenn die Anwendung veröffentlicht wird (z.B. mit dotnet publish), wird die SPA zu einer Sammlung von statischen Dateien im wwwroot-Ordner des Servers. Es ist keine Laufzeitkomponente erforderlich, um die Anwendung zu bedienen. Die Program.cs-Datei ist so konfiguriert, dass app.UseStaticFiles() die statischen Dateien bereitstellt und app.MapFallbackToFile("index.html") als Fallback-Route dient. Dies bedeutet, dass für jede unbekannte Anfrage, die der Server erhält und die keiner spezifischen Backend-Route zugeordnet werden kann, die index.html-Datei der SPA ausgeliefert wird, wodurch der clientseitige Router die Navigation übernimmt und HTTP 404-Fehler vermieden werden.

Vergleich: Entwicklung vs. Veröffentlichung

MerkmalEntwicklungsphaseVeröffentlichungsphase
Frontend-HostingSeparater Frontend-Entwicklungsserver (via Proxy)Statische Dateien im wwwroot-Ordner
Backend-KommunikationÜber Frontend-Proxy geleitetDirekte HTTP-Anfragen
DateiverwaltungSource-Dateien, Node.js-ModuleGebündelte und optimierte statische Assets
FehlerbehandlungMiddleware leitet zu Proxy um, startet Proxy bei BedarfMapFallbackToFile("index.html") für unbekannte Routen
Build-Prozessnpm install, npm start (automatisch vom .NET-Server gestartet)npm install, npm run build (im .csproj-File integriert)

Vorteile der ASP.NET Core SPA-Templates

Die von Visual Studio bereitgestellten Templates für ASP.NET Core SPAs bieten mehrere entscheidende Vorteile, die den Entwicklungsprozess optimieren und die Leistung der Anwendung verbessern:

  • Automatischer Proxy-Start: Die Templates erkennen, wenn der Frontend-Entwicklungsserver (Proxy) nicht läuft, und starten ihn automatisch. Dies erspart Entwicklern manuelle Schritte und sorgt für einen reibungslosen Workflow.
  • HTTPS-Konfiguration: Die Templates kümmern sich um die korrekte Einrichtung von HTTPS für den Frontend-Entwicklungsserver, was für moderne Webanwendungen unerlässlich ist und Sicherheitswarnungen im Browser vermeidet.
  • Transparente Anfragenweiterleitung: Bestimmte Anfragen werden automatisch an das Backend des ASP.NET Core-Servers weitergeleitet. Wenn der Browser eine Anfrage an einen Backend-Endpunkt sendet (z.B. /weatherforecast), empfängt der SPA-Proxy die Anfrage und leitet sie transparent an den Server weiter, der dann antwortet und die Daten über den Proxy zurück an den Browser sendet. Dies vereinfacht die Kommunikation zwischen Frontend und Backend erheblich.

Aspekte der SPA-Entwicklung

Die Projektdateien der SPA-Templates definieren verschiedene Eigenschaften, die das Verhalten der Anwendung während der Entwicklung steuern. Im .csproj-File finden sich wichtige Einstellungen wie <SpaRoot>ClientApp\</SpaRoot>, das den Pfad zum Frontend-Projekt angibt, und <SpaProxyServerUrl>https://localhost:44414</SpaProxyServerUrl>, das die URL des erwarteten SPA-Proxys festlegt. <SpaProxyLaunchCommand>npm start</SpaProxyLaunchCommand> definiert den Befehl, mit dem der SPA-Proxy gestartet wird, falls er nicht läuft.

Das NuGet-Paket Microsoft.AspNetCore.SpaProxy ist für die gesamte Logik verantwortlich, die den Proxy erkennt, startet und den Browser umleitet. Dies wird durch die Hosting-Startup-Assembly ermöglicht, die in Properties/launchSettings.json definiert ist und während der Entwicklung die notwendigen Komponenten automatisch hinzufügt.

Einrichtung der Client-Anwendung

Die spezifische Einrichtung variiert je nach verwendetem Frontend-Framework, viele Aspekte der Konfiguration sind jedoch ähnlich.

Angular Setup

Die generierte ClientApp/package.json-Datei enthält Skripte zum Starten des Angular-Entwicklungsservers. Das prestart-Skript ruft ClientApp/aspnetcore-https.js auf, um sicherzustellen, dass das HTTPS-Zertifikat des Entwicklungsservers für den SPA-Proxy-Server verfügbar ist. Die start:windows- und start:default-Skripte starten den Angular-Entwicklungsserver über ng serve und stellen den Port, HTTPS-Optionen sowie den Pfad zum Zertifikat und Schlüssel bereit.

Die ClientApp/angular.json-Datei enthält einen proxyConfig-Eintrag in der Entwicklungskonfiguration, der auf proxy.conf.js verweist. Diese Datei definiert die Routen, die an das Backend des Servers weitergeleitet werden müssen. Die Logik in proxy.conf.js nutzt Umgebungsvariablen, um den Port des Backends zu bestimmen.

What is a single page application (SPA) template?
ASP.NET Core offers SPA templates for developing Angular and React apps that are hosted inside a .NET backend server. Instead of returning HTTP 404 (Not Found), a fallback route handles unknown requests to the backend and serves the index.html for the SPA.

React Setup

Im React-Template enthält der scripts-Abschnitt der package.json-Datei Skripte zum Starten der React-Anwendung während der Entwicklung. Das prestart-Skript ruft aspnetcore-https.js und aspnetcore-react.js auf. Letzteres ist dafür verantwortlich, die lokale HTTPS-Entwicklungszertifikatsdatei (.env.development.local) entsprechend zu konfigurieren, indem SSL_CRT_FILE und SSL_KEY_FILE hinzugefügt werden.

Die Datei src/setupProxy.js konfiguriert den SPA-Proxy, um Anfragen an das Backend weiterzuleiten. Ähnlich wie bei Angular basiert die Logik in setupProxy.js auf Umgebungsvariablen, um den Port des Backends zu bestimmen.

Vergleich: Angular vs. React Client Setup

MerkmalAngularReact
HTTPS-Zertifikataspnetcore-https.jsaspnetcore-https.js & aspnetcore-react.js
Proxy-Konfigurationproxy.conf.js (referenziert in angular.json)src/setupProxy.js
Start-Skriptng servereact-scripts start
UmgebungsvariablenGenutzt in proxy.conf.jsGenutzt in src/setupProxy.js und .env.development.local

Unterstützte SPA-Framework-Versionen in ASP.NET Core SPA-Templates

Die SPA-Projekt-Templates, die mit jeder ASP.NET Core-Version ausgeliefert werden, referenzieren die neueste Version des jeweiligen SPA-Frameworks. Da SPA-Frameworks typischerweise kürzere Release-Zyklen als .NET haben, kann es vorkommen, dass die unterstützte Version des SPA-Frameworks und .NET nicht synchron sind. Das ASP.NET Core SPA-Templates können jedoch in einem Patch-Release auf eine neue SPA-Framework-Version aktualisiert werden, um die Templates in einem unterstützten und sicheren Zustand zu halten.

Warum Single Page Applications nutzen?

Single Page Applications (SPAs) sind nicht ohne Grund so beliebt und werden von Technologiegiganten wie Google (Gmail, Google Maps) eingesetzt. Sie bieten eine Reihe überzeugender Vorteile:

  • Bessere Geschwindigkeit: SPAs laden die meisten Ressourcen (HTML, JavaScript, CSS) nur einmal initial. Bei nachfolgenden Interaktionen wird nur noch der benötigte Dateninhalt ausgetauscht. Dies führt zu deutlich kürzeren Antwortzeiten und einer flüssigeren Benutzererfahrung, da keine vollständigen Seitenneuladungen erforderlich sind.
  • Verbesserte Benutzererfahrung: Die schnelle Reaktion und nahtlose Navigation tragen maßgeblich zu einer hervorragenden Benutzererfahrung bei. Nutzer müssen nicht warten, bis eine ganze Seite neu geladen wird, um nur einen Teil der Informationen zu erhalten. Dies erhöht die Zufriedenheit und Bindung.
  • Effizientes Caching: Da SPAs Daten effizient cachen können, senden sie Anfragen an den Server oft nur einmal und aktualisieren dann die anderen Daten. Dies ermöglicht es der Anwendung, auch offline zu funktionieren, und synchronisiert lokale Daten mit dem Server, sobald eine Verbindung hergestellt ist. Dies spart Bandbreite und verbessert die Zugänglichkeit.
  • Vereinfachte Entwicklung: Die Entwicklung einer SPA ist oft einfacher, da Frontend- und Backend-Teams entkoppelt arbeiten können. Die serverseitige Logik und die Daten werden von der Präsentation getrennt, was die Wiederverwendbarkeit von Code ermöglicht und Entwicklern erlaubt, sich auf ihre jeweiligen Bereiche zu konzentrieren, ohne sich um die Technologie des jeweils anderen zu kümmern.
  • Einfaches Debugging: SPAs, die mit gängigen Frameworks wie React, Angular oder Vue.js erstellt wurden, sind mit den Entwicklertools der Browser (z.B. Google Chrome) leicht zu debuggen. Entwickler können Seitenelemente, Daten und Netzwerkoperationen einfach überwachen und untersuchen, was die Fehlersuche erheblich vereinfacht.
  • Geringerer Ressourcenverbrauch: SPAs verbrauchen weniger Bandbreite, da sie Seiten nur einmal laden. Sie funktionieren auch in Gebieten mit langsameren Internetverbindungen gut und können oft offline genutzt werden, was den Datenverbrauch weiter reduziert.
  • Plattformübergreifende Kompatibilität: Entwickler können Anwendungen erstellen, die mit einer einzigen Codebasis auf jedem Betriebssystem, Gerät und Browser laufen. Dies erhöht die Reichweite der Anwendung und bietet den Kunden eine konsistente Erfahrung, unabhängig von ihrem Gerät.

Nachteile von Single Page Applications

Trotz ihrer vielen Vorteile haben SPAs auch einige Nachteile, die bei der Entscheidungsfindung berücksichtigt werden sollten:

  • Schlechte SEO-Leistung: Die Architektur von SPAs mit einer einzigen URL macht es schwierig, sie für die Suchmaschinenoptimierung (SEO) zu optimieren. Da sich der Inhalt dynamisch ändert, ohne dass sich die URL ändert, können Suchmaschinen-Bots Schwierigkeiten haben, alle Inhalte zu indizieren. Dies kann zu einer schlechteren Sichtbarkeit in den Suchergebnissen führen.
  • Online-Bedrohungen: SPAs können anfälliger für bestimmte Online-Bedrohungen wie Cross-Site Scripting (XSS) sein, wenn keine ausreichenden Sicherheitsvorkehrungen getroffen werden. Wenn die Zugriffskontrolle auf operativer Ebene nicht streng genug ist, kann dies sensible Daten und Funktionen offenlegen.
  • Anfängliche Ladezeiten: Obwohl SPAs im Betrieb sehr schnell sind, kann die anfängliche Ladezeit länger sein, da alle benötigten Ressourcen beim ersten Aufruf geladen werden müssen. Dies kann bei einigen Benutzern, die eine sofortige Reaktion erwarten, zu Irritationen führen.
  • Browser-Historie: SPAs speichern die Browser-Historie nicht immer intuitiv. Wenn ein Benutzer die Zurück-Taste drückt, landet er möglicherweise auf einer zuvor geladenen Webseite und nicht im vorherigen Zustand innerhalb der SPA. Dies kann jedoch durch die Verwendung der HTML5 History API abgemildert werden.

Wann sollten Sie SPAs einsetzen?

Die Entscheidung für oder gegen eine SPA hängt stark von den spezifischen Anforderungen und Zielen Ihrer Anwendung ab. SPAs eignen sich besonders gut für folgende Szenarien:

  • Wenn Sie eine Website mit kleineren Datenmengen und einer dynamischen Plattform erstellen möchten.
  • Wenn Sie planen, in Zukunft eine mobile Anwendung zu entwickeln; die Backend-API kann sowohl für Ihre Website als auch für Ihre mobile App verwendet werden.
  • Für soziale Netzwerke (z.B. Facebook), geschlossene Communities und SaaS-Plattformen, die keine starke SEO-Optimierung benötigen.
  • Wenn Sie eine nahtlose Benutzerinteraktion in Ihrer Anwendung bieten möchten, z.B. bei Live-Änderungen wie bei Google Maps.
  • Für Live-Updates in Ihrer Anwendung, wie Daten-Streaming, Echtzeit-Diagramme, Benachrichtigungen oder Alerts.
  • Wenn Sie eine native, konsistente und dynamische Benutzererfahrung über verschiedene Betriebssysteme, Browser und Geräte hinweg bieten möchten.

Wie erstellt man Single Page Applications?

Die Erstellung einer SPA erfordert ein gut koordiniertes Team, eine realistische Zeit- und Budgetplanung sowie die Auswahl geeigneter Tools und Technologien.

Team

Sie benötigen ein Entwicklungsteam mit Expertise in JavaScript, CSS und HTML sowie Kenntnissen in verwandten Technologien. Ein typisches Team umfasst:

  • Projektmanager: Zur Leitung des Teams und Überwachung des Entwicklungsprozesses.
  • JavaScript-Entwickler: Für die Frontend-Code-Qualität.
  • UX/UI-Designer: Für ansprechendes und benutzerfreundliches App-Design.
  • Backend-Software-Ingenieure: Für die nahtlose Verbindung von Server und App-Oberfläche.
  • QA-Spezialisten: Zum Testen der Anwendung auf Fehler und zur Sicherstellung optimaler Leistung.

Zeit und Budget

Legen Sie einen klaren Zeitplan für die App-Entwicklung fest, der auf der Komplexität, den Funktionsanforderungen und der Teamgröße basiert. Planen Sie ausreichend Zeit für Forschung, Planung und einen optimierten Prozess für jede Entwicklungsphase ein, von der Codierung über das Design bis hin zum Testen und der Bereitstellung. Berücksichtigen Sie auch Ressourcen für die App-Wartung nach der Veröffentlichung.

Tools und Technologien

Neben JavaScript, CSS und HTML sind weitere Tools und Technologien entscheidend. Dazu gehören JavaScript-Frameworks für die App-Struktur, Ajax (JS und XML) für die Bereitstellung, Backend-Technologien wie PHP oder Node.js und Datenbanken wie MongoDB oder MySQL.

Beliebte JavaScript-Frameworks für SPA-Entwicklung:

  • Ember.js: Ein produktives und bewährtes Framework für funktionsreiche Benutzeroberflächen, das eine solide Basis für Ihre Anwendung bietet. Es ist ein „Batteries-included“-Framework mit umfassendem Router, Datenzugriff (Ember Data) und schnellen Performance-Upgrades.
  • Angular.js: Ein leistungsstarkes Framework, das Ihnen hilft, Ihre SPA effizient zu erstellen. Es erweitert den HTML-Wortschatz Ihrer Anwendung und bietet eine Umgebung, die schnell zu bauen, lesbar und ausdrucksstark ist. Es ist hochgradig erweiterbar und kompatibel mit mehreren Bibliotheken.
  • Backbone.js: Bietet eine robuste Struktur für Anwendungen mit Modellen, benutzerdefinierten Ereignissen, Schlüssel-Wert-Bindung und Ansichten mit Ereignisbehandlung. Es verbindet sich über eine RESTful JSON-Schnittstelle mit Ihrer API und ist für seine Leichtgewichtigkeit bekannt.
  • Vue.js: Ein progressives JS-Framework, das ein vielseitiges Ökosystem für den Aufbau Ihrer SPA bietet. Es ist anpassungsfähig und kann je nach Anwendungsfall zwischen Framework und Bibliothek skaliert werden.
  • React: Eine der beliebtesten JavaScript-Bibliotheken zur Erstellung von Single Page Applications, entwickelt und gepflegt von Meta (ehemals Facebook). Es ist leicht zu erlernen für JavaScript-Entwickler, hat eine große Community und ist extrem anpassungsfähig für UI-Entwicklung. Viele große Unternehmen nutzen React für ihre Webanwendungen.

Fazit

Single Page Applications (SPAs) sind eine ausgezeichnete Wahl, wenn Sie eine hochreaktionsfähige, schnelle und funktionsreiche Anwendung für soziale Netzwerke, SaaS-Geschäfte, Live-Updates oder andere Anwendungsfälle entwickeln möchten, bei denen eine nahtlose Benutzererfahrung im Vordergrund steht. Trotz einiger Nachteile, insbesondere im Bereich SEO und anfänglicher Ladezeiten, überwiegen die Vorteile in vielen modernen Anwendungsszenarien. Die ASP.NET Core SPA-Templates bieten eine hervorragende Grundlage, um mit der Entwicklung solcher Anwendungen zu beginnen. Ihre Entscheidung sollte immer auf einer sorgfältigen Abwägung Ihrer spezifischen Anforderungen und Ziele basieren, um das am besten geeignete Framework und die passende Architektur für Ihr Projekt zu wählen.

Wenn du andere Artikel ähnlich wie Single Page Application (SPA) Templates: Eine Übersicht kennenlernen möchtest, kannst du die Kategorie Wellness besuchen.

Go up