PWA integratie.

Vanaf Angular 6 verloopt de PWA-integratie zeer vlotjes. Je hoeft enkel nog wat eigenschappen aan te passen en automatisch gegenereerde icoontjes te vervangen.

PWA toevoegen.

$ ng add @angular/pwa

Bekijk de output van de terminal even. Er zijn een aantal bestanden toegevoegd en enkele bestanden aangepast.
Zie: https://angular.io/guide/service-worker-config

PWA lokaal testen

Een PWA werkt ENKEL als de site via https wordt aangeboden, met uitzondering van localhost.
De service worker wordt ook pas geïntegreerd als je de site voor productie build. Via ng serve lukt het niet.

Omdat de homepage redirect naar todo, zal de PWA-test falen (Op de hosting geen probleem), ga je de code in app-routing.module.ts een klein beetje aanpassen zodat je de lokale test toch kan uitvoeren. (Wijzig lijn 3 in lijn 4).


    

Om de build-versie van de site lokaal te testen, installeer je best een lokale webserver. Wij gebruiken hiervoor de zeer eenvoudige http-server die we globaal installeren.

$ npm i -g http-server

Onze werkomgeving is klaar en nu kunnen we de service worker testen en controleren of de site offline ook nog beschikbaar is.

Offline caching

Het enige dat de service worker voorlopig implementeert, is offline caching. Dit kan je testen vanuit de Application tab in de Chrome console.

Offline caching

Site automatisch vernieuwen bij nieuwe build

Het is natuurlijk ook handig dat je de gebruiker erop attent maakt dat de site werd aangepast. Ofwel kan je de nieuwe versie volledig automatisch herladen (zie video), ofwel toon je binnen de pagina een melding zodat de gebruiker zelf kan beslissen of hij de site nu of later vernieuwt.

  • Open app.component.ts en wijzig de code binnen de constructor.
    
                Merk op dat we SwUpdate en OnInit bovenaan de pagina importeren en vervolgens in AppComponent
                implementeren (lijn 5) en in de constructor (lijn 7) injecteren. Wat en
                waarom we services injecteren komt later uitgebreid aan bod.
  • Wijzig bijvoorbeeld de h4-tag in src/app/todo/todo.component.html.
  • Maak een nieuwe Productie-build.
  • Vernieuw de pagina http://localhost:8080/.
  • Ziehier het resultaat:
    Auto update
  • Upload de pagina naar Firebase en test het resultaat.