Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Progressive Web Apps - Warum sie wichtig werden

Progressive Web Apps - Warum sie wichtig werden

My Keynote about PWA at BASTA! Spring 2018 in Frankfurt, Germany.

Link to Example:
https://github.com/manfredsteyer/angular-pwa-case-study-basta-spring-keynote-2018

More:
https://www.softwarearchitekt.at

Manfred Steyer

February 21, 2018
Tweet

More Decks by Manfred Steyer

Other Decks in Programming

Transcript

  1. @BASTAcon & @ManfredSteyer Über mich … • Manfred Steyer •

    SOFTWAREarchitekt.at • Trainer & Consultant • Focus: Angular • Google Developer Expert (GDE) • Microsoft MVP Page ▪ 2
  2. @BASTAcon & @ManfredSteyer Inhalt ▪Überblick zu PWA ▪Service Worker als

    Herzstück von PWAs ▪Daten im Browser speichern ▪Installation am Home Screen ▪PWA und Windows ▪Fazit
  3. @BASTAcon & @ManfredSteyer Web Apps Keine Installation Cross- Plattform Einfaches

    Deployment Einfaches Update Durchsuchbar Links/ Bookmarks
  4. @BASTAcon & @ManfredSteyer Native Apps Einfach zu starten Sofortiger Nutzen

    Offline Langsame Verbindungen Push Notifications Gerätezugriff
  5. @BASTAcon & @ManfredSteyer Cache Strategien Cache only Network only Try

    Cache, fallback to Network Try Network, fallback to Cache …
  6. @BASTAcon & @ManfredSteyer Service Worker registrieren if('serviceWorker' in navigator) {

    navigator .serviceWorker .register('/sw.js', { scope: '/' }) .then((r) => { console.debug('service worker started!'); }); }
  7. @BASTAcon & @ManfredSteyer Service Worker Script self.addEventListener('fetch', function(event) { event.respondWith(cacheFirst(event.request));

    }); function cacheFirst(request) { return caches.match(request) .then(response => response || fetch(request)); }
  8. @BASTAcon & @ManfredSteyer @angular/service-worker @NgModule({ imports: [ ServiceWorkerModule.register('/ngsw-worker.js', {enabled: environment.production}),

    […] ], […] }) export class AppModule { } Kommt von Angular / CLI + Config-Datei mit Cache-Strategien etc. + ng build --prod
  9. @BASTAcon & @ManfredSteyer Daten offline speichern • LocalStorage (kein Zugriff

    über Service Worker) • WebDb (deprecated aber hier) • IndexedDb
  10. @BASTAcon & @ManfredSteyer { "name": "Hotel PWA-Demo", "short_name": "Hotel", "icons":

    [{ "src": "images/touch/icon-128x128.png", "sizes": "128x128", "type": "image/png" }, […] ], "start_url": "/index.html?homescreen=1", "display": "standalone", […] } Web App Manifest
  11. @BASTAcon & @ManfredSteyer PWAs im AppStore Wie? •Automatisch via Bing

    Crawler •Oder: Registrieren Warum? •Auffindbarkeit •Zugriff auf WinRT APIs
  12. @BASTAcon & @ManfredSteyer • Rascher Start • Langsame Verbindungen überbrücken

    Offline mit Service Worker • Asynchrone Geschäftsprozesse • "Benutzer zurückholen" Push Notifactions • Installieren auf Home Screen Web App Manifest • Daten vorhalten • Daten synchronisieren Browser DBs und Background Sync Fazit Quick Wins
  13. @BASTAcon & @ManfredSteyer Fazit Jede Web-App sollte eine PWA sein

    Sehr verlockend (nicht nur) für Business Apps M&Ms können Ihnen den Tag retten