Cosa sono le Progressive Web App

“Una Progressive Web App utilizza moderne funzionalità web per offrire un’esperienza utente app-like.” – Progressive Web App

Le App native Apps possono fare cose come inviare le notifiche push, lavorare offline, essere un app proprio come Apple e Google l’hanno immaginata), essere visibile sulla homescreen dello smartphone, e così via. Le Applicazioni Web  accessibili da un browser smartphone, in confronto, storicamente non hanno queste possibilità. Le Progressive Web Apps riempiono questo gap con nuove API web, nuovi concetti di design e nuove parole di moda.

Per essere chiari, sto parlando di applicazioni web che “girano” sui browser dello smartphone. Applicazioni ibride, cioè applicazioni che sono delle pagine web inglobate in una App nativa (come Ionic con Cordova), hanno tutte le caratteristiche che ci aspettiamo da una applicazione nativa. Ma se estraiamo il contenuto web da un’applicazione ibrida e lo carichiamo su un browser mobile, l’applicazione è limitata dalle caratteristiche del browser (per una varietà di ragioni di sicurezza e di standardizzazione API).

Web Apps Progressive portare caratteristiche che ci aspettiamo da applicazioni native all’esperienza browser mobile in un modo che utilizza tecnologie basate su standard ed eseguire in un contenitore sicuro accessibile a chiunque sul web.

Nel complesso, Progressive Web Apps descrivere un insieme di tecnologie, concetti di design, e le API Web che lavorano in tandem per fornire un’esperienza app-come sul Web mobile. Camminiamo attraverso alcuni dei principi fondamentali di Progressive Web Apps.

Service Workers

I Service Workers sono una incredibilmente potente, e altrettanto confusa, tecnologia alla base di una Progressive Web App. Essi offrono possibilità di lavorare offline, notifiche push, aggiornamento contenuti in background, caching dei contenuti, e molto altro ancora.

Ad alto livello, un Service Worker è uno script che lavora dietro le quinte, indipendente dalla vostra applicazione, e si attiva in risposta a eventi come le richieste di rete, le notifiche push, i cambiamenti di connettività…

Alcuni definiscono i Service Workers come un “proxy”, che credo li descrive bene. Possiamo “ascoltare” eventi come il recupero dati che si verifica ad ogni richiesta di rete. Siamo in grado di gestire questo evento con il pieno controllo, controllando se vi sono dati già memorizzati nella cache e recuperandoli immediatamente, oppure inoltrare la richiesta al server remoto. Il nostro script agisce come un proxy, o middleware, per la richiesta.

La potenza pura e la flessibilità dei ServiceWorkers li rende molto complicati, e, in generale, gli sviluppatori vorranno utilizzare alcuni servizi “pronti” – almeno i più comuni come la modalità di lavoro offline.

Il punto principale è che i Service Workers sono solo un file JavaScript come qualsiasi altro, in esecuzione in background e attivati tramite eventi. I Service Workers sono disponibili su Android con Chrome 50 e non sono attualmente supportati da altri importanti browser mobili.