Progressive Web-Anwendung
Es gibt viele gängige Technologien, um progressive Web-Apps zu erstellen. Alle PWAs benötigen mindestens einen Service Worker und ein Manifest.
ManifestEdit
Das Web-App-Manifest ist eine W3C-Spezifikation, die ein JSON-basiertes Manifest (normalerweise mit manifest.json), um Entwicklern einen zentralen Ort zu bieten, an dem sie Metadaten zu einer Webanwendung ablegen können, einschließlich:
- Der Name der Webanwendung
- Links zu den Webanwendungssymbolen oder Bildobjekten
- Die bevorzugte URL zum Starten oder Öffnen der Webanwendung
- Die Webanwendungskonfigurationsdaten
- Standardausrichtung der Webanwendung
- Die Option, den Anzeigemodus einzustellen, z.z.B. Vollbild
Diese Metadaten sind entscheidend dafür, dass eine App zu einem Homescreen hinzugefügt oder anderweitig neben nativen Apps gelistet wird.
iOS-Unterstützung
iOS Safari implementiert teilweise Manifeste, während die meisten PWA-Metadaten über Apple-spezifische Erweiterungen der Meta-Tags definiert werden können. Diese Tags ermöglichen es Entwicklern, die Vollbildanzeige zu aktivieren, Icons und Splash-Screens zu definieren und einen Namen für die Anwendung festzulegen.
WebAssemblyBearbeiten
WebAssembly ermöglicht es, vorkompilierten Code in einem Webbrowser auszuführen, und zwar mit nahezu nativer Geschwindigkeit. So können Bibliotheken, die in Sprachen wie C geschrieben wurden, zu Webanwendungen hinzugefügt werden. Aufgrund der Kosten für die Übergabe von Daten von JavaScript an WebAssembly wird es in naher Zukunft hauptsächlich für Numbercrunching (z. B. Spracherkennung und Computer Vision) und nicht für ganze Anwendungen eingesetzt werden.
DatenspeicherungBearbeiten
Progressive Web-App-Ausführungskontexte werden wann immer möglich entladen, daher müssen progressive Web-Apps den Großteil des langfristigen internen Zustands (Benutzerdaten, dynamisch geladene Anwendungsressourcen) auf eine der folgenden Arten speichern
Web-SpeicherungBearbeiten
Web Storage ist eine W3C-Standard-API, die die Speicherung von Schlüsselwerten in modernen Browsern ermöglicht. Die API besteht aus zwei Objekten, sessionStorage (ermöglicht eine sitzungsbezogene Speicherung, die bei Beendigung der Browser-Sitzung gelöscht wird) und localStorage (ermöglicht eine sitzungsübergreifende Speicherung).
Service-WorkerBearbeiten
Ein Service-Worker ist ein Web-Worker, der einen programmierbaren Netzwerk-Proxy implementiert, der auf Web/HTTP-Anfragen des Hauptdokuments reagieren kann. Er ist in der Lage, die Verfügbarkeit eines entfernten Servers zu prüfen und, wenn dieser Server verfügbar ist, Inhalte zwischenzuspeichern und diese Inhalte später dem Dokument zuzuführen. Service-Worker arbeiten, wie alle anderen Web-Worker auch, getrennt vom Kontext des Hauptdokuments. Service Worker können Push-Benachrichtigungen verarbeiten und Daten im Hintergrund synchronisieren, Ressourcenanfragen zwischenspeichern oder abrufen, Netzwerkanfragen abfangen und zentralisierte Aktualisierungen unabhängig von dem Dokument empfangen, das sie registriert hat, selbst wenn dieses Dokument nicht geladen ist.
Service Worker durchlaufen einen dreistufigen Lebenszyklus aus Registrierung, Installation und Aktivierung. Bei der Registrierung wird dem Browser der Standort des Service Workers mitgeteilt, um die Installation vorzubereiten. Die Installation erfolgt, wenn im Browser kein Service-Worker für die Webapp installiert ist oder wenn es ein Update für den Service-Worker gibt. Die Aktivierung erfolgt, wenn alle Seiten der PWA geschlossen sind, damit es keinen Konflikt zwischen der vorherigen Version und der aktualisierten Version gibt. Der Lebenszyklus hilft auch dabei, die Konsistenz beim Wechsel zwischen den Versionen des Service Workers aufrechtzuerhalten, da nur ein einziger Service Worker für eine Domain aktiv sein kann.
Indexed Database APIEdit
Indexed Database API ist eine W3C-Standard-Datenbank-API, die in allen gängigen Browsern verfügbar ist. Die API wird von modernen Browsern unterstützt und ermöglicht die Speicherung von JSON-Objekten und beliebigen als String darstellbaren Strukturen. Indexed Database API kann mit einer Wrapper-Bibliothek verwendet werden, die zusätzliche Konstrukte um sie herum bereitstellt.
AppCache (veraltet)Bearbeiten
Application Cache (oder AppCache oder HTML5-Cache-Manifest) ist eine frühere Technologie, die es der Anwendung ermöglichte, Inhalte im Voraus für die spätere Verwendung zu cachen, wenn das Gerät offline ist. Sie funktioniert ausreichend für einseitige Anwendungen, für die sie entwickelt wurde, versagt aber auf problematische Weise bei mehrseitigen Anwendungen wie Wikis. Ab Mai 2019 wird die Technologie von den wichtigsten Browsern unterstützt und seit Jahren von einigen Websites verwendet, aber sie ist bereits zugunsten von Service Workern veraltet und wird schließlich entfernt werden.