Progressive web application
Er zijn veel veelgebruikte technologieën om progressive web apps te maken. Alle PWA’s vereisen minimaal een service worker en een manifest.
ManifestEdit
Het web app manifest is een W3C-specificatie die een JSON-gebaseerd manifest definieert (meestal gelabeld manifest.json) om ontwikkelaars een gecentraliseerde plaats te bieden om metadata te plaatsen die geassocieerd zijn met een web applicatie, inclusief:
- De naam van de web applicatie
- Links naar de web app iconen of beeldobjecten
- De geprefereerde URL om de web app te starten of te openen
- De web app configuratiegegevens
- De standaard oriëntatie van de web app
- De optie om de weergavemodus in te stellen, bijv.bijvoorbeeld volledig scherm
Deze metadata zijn van cruciaal belang voor een app om te worden toegevoegd aan een startscherm of anderszins vermeld naast native apps.
iOS ondersteuningEdit
iOS Safari implementeert gedeeltelijk manifests, terwijl de meeste PWA metadata kunnen worden gedefinieerd via Apple-specifieke extensies voor de meta-tags. Deze tags stellen ontwikkelaars in staat om full-screen weergave in te schakelen, iconen en splash screens te definiëren, en een naam voor de applicatie op te geven.
WebAssemblyEdit
WebAssembly maakt het mogelijk om voorgecompileerde code in een webbrowser te draaien, op bijna-native snelheid. Zo kunnen bibliotheken geschreven in talen als C worden toegevoegd aan webapps. Vanwege de kosten van het doorsturen van gegevens van JavaScript naar WebAssembly zal het gebruik op korte termijn vooral bestaan uit number-crunching (zoals spraakherkenning en computer vision), en niet zozeer uit volledige toepassingen.
GegevensopslagEdit
Progressive Web App uitvoeringscontexten worden waar mogelijk gelost, dus progressive web apps moeten het grootste deel van de interne toestand op lange termijn (gebruikersgegevens, dynamisch geladen applicatiebronnen) op een van de volgende manieren opslaan
WebopslagEdit
Web Storage is een W3C standaard API die key-value opslag in moderne browsers mogelijk maakt. De API bestaat uit twee objecten, sessionStorage (dat alleen sessie-opslag mogelijk maakt die wordt gewist bij het einde van de browsersessie) en localStorage (dat opslag over sessies heen mogelijk maakt).
Service workersEdit
Een service worker is een webwerker die een programmeerbare netwerkproxy implementeert die kan reageren op web/HTTP-verzoeken van het hoofddocument. Het is in staat om de beschikbaarheid van een externe server te controleren en inhoud te cachen als die server beschikbaar is, en die inhoud later aan het document te serveren. Service workers werken, net als andere webworkers, los van de context van het hoofddocument. Service workers kunnen push notificaties afhandelen en data synchroniseren op de achtergrond, resource requests cachen of ophalen, netwerk requests onderscheppen en gecentraliseerde updates ontvangen onafhankelijk van het document dat hen geregistreerd heeft, zelfs wanneer dat document niet geladen is.
Service workers doorlopen een drie-stappen levenscyclus van Registratie, Installatie en Activering. Registratie houdt in dat de browser wordt verteld waar de service worker zich bevindt, ter voorbereiding op de installatie. Installatie vindt plaats als er geen service worker is geïnstalleerd in de browser voor de webapp, of als er een update van de service worker is. Activering vindt plaats wanneer alle pagina’s van de PWA zijn gesloten, zodat er geen conflict is tussen de vorige versie en de bijgewerkte versie. De levenscyclus helpt ook om consistentie te behouden bij het wisselen tussen versies van de service worker, omdat slechts een enkele service worker actief kan zijn voor een domein.
Indexed Database APIEdit
Indexed Database API is een W3C standaard database API die beschikbaar is in alle grote browsers. De API wordt ondersteund door moderne browsers en maakt opslag mogelijk van JSON-objecten en alle structuren die als een string kunnen worden weergegeven. De geïndexeerde database-API kan worden gebruikt met een wrapper-bibliotheek die extra constructies eromheen levert.
AppCache (verouderd)bewerken
Application Cache (of AppCache of HTML5 cache manifest) is een eerdere technologie waarmee de applicatie content van tevoren kon cachen voor later gebruik wanneer het apparaat offline is. Het werkt adequaat voor toepassingen met één pagina, waarvoor het was ontworpen, maar faalt op problematische manieren voor toepassingen met meerdere pagina’s, zoals wiki’s. Vanaf mei 2019 wordt de technologie ondersteund door de belangrijkste browsers en al jaren gebruikt door sommige sites, maar het is al afgeschreven ten gunste van service workers en zal uiteindelijk worden verwijderd.