SlideShare ist ein Scribd-Unternehmen logo
1 von 114
Downloaden Sie, um offline zu lesen
23	al	27	de	Octubre	2017.NET	Conf	UY v2017
Progressive	Web	Apps
Nicolás Bello	Camilletti
Lead	Developer
SOUTHWORKS
23	al	27	de	Octubre	2017.NET	Conf	UY v2017
PROGRESSIVEWEBAPP
Es un conjunto de conceptos/herramientas/etc.
WEBCOMONATIVO
No es un concepto nuevo
native web
native web
WEBAPPSENWINDOWS
Pinned Sites
Windows 7
WEBAPPSENWINDOWS
Pinned Sites
Windows 7
Packaged Web Apps
Windows 8
WEBAPPSENWINDOWS
Pinned Sites
Windows 7
Packaged Web Apps
Windows 8
Hosted Web Apps
Windows 10
WEBAPPSENWINDOWS
Pinned Sites
Windows 7
Packaged Web Apps
Windows 8
Progressive Web Apps
Windows 10
Hosted Web Apps
Windows 10
PROGRESSIVEWEBAPP
a.k.a. “PWA”
PWA&ANDROID
Lyft
ride.lyft.com
Lyft
ride.lyft.com
BENEFICIOSDEWEBAPPS
WEBAPPSANDAN
ENCUALQUIERLUGAR!
ONECODEBASETORULETHEMALL…
PWAS=MENORCOSTO(&TIEMPO)
App core
iPhone iPad Publicar en App Store
Android
Phone
Android
Tablet Publicar en Play Store
Windows Publicar en Windows Store
MacOS Publicar en Mac App Store
Web Host
Nativa
Es requerido publicar en los App store
PWAS=MENORCOSTO(&TIEMPO)
PWA
Publicar en los App store es opcional (o por única vez)
Host
Free
Nativa
Es requerido publicar en los App store
App core
iPhone iPad Publicar en App Store
Android
Phone
Android
Tablet Publicar en Play Store
Windows Publicar en Windows Store
MacOS Publicar en Mac App Store
Web Host
App core
iPhone iPad
Android
Phone
Android
Tablet
Windows
MacOS
Web
Other PWA-capable
PRINCIPIOSDEPWA
PWASSONSIMPLEMENTEWEBAPPS…
PWASSONSIMPLEMENTEWEBAPPS…
¡QUEPROVEENDEUNAEXCELENTE
EXPERIENCIADEUSUARIO!
PWAES
PWAES
Progressive
PROGRESSIVE
¿QUÉESPROGRESSIVEENHANCEMENT?
Mono
¿QUÉESPROGRESSIVEENHANCEMENT?
Stereo
¿QUÉESPROGRESSIVEENHANCEMENT?
Surround Sound
¿QUÉESPROGRESSIVEENHANCEMENT?
5.1 Channel
Surround Sound
¿QUÉESPROGRESSIVEENHANCEMENT?
7.1 Channel
Surround Sound
¿QUÉESPROGRESSIVEENHANCEMENT?
16.2 Channel Surround Sound
¿QUÉESPROGRESSIVEENHANCEMENT?
A veces, mono es
la única opción
¿QUÉESPROGRESSIVEENHANCEMENT?
Objectivo &
tareas principales
¿QUÉESPROGRESSIVEENHANCEMENT?
Capacidades
Experiencia
PESEASEGURADEQUELOSUSUARIOS
PUEDANUSARTUPRODUCTO
SINIMPORTARELCONTEXTO.
PROGRESSIVEENHANCEMENTWEB
PROGRESSIVEENHANCEMENTWEB
type="email"
Deltas	de	experiencia
1. ¿Soporta input para email?
2. ¿Algoritmo de	validación implementado?
3. ¿Teclado virtual?
PROGRESSIVEENHANCEMENTWEB
required
Deltas	de	experiencia
1. ¿Soporta validación HTML?
PROGRESSIVEENHANCEMENTWEB
aria-required="true"
Deltas	de	experiencia
1. ¿El navegador expone la propiedad aria-required ?
2. Assistive tech implementation of aria-required?
required validation
email validation
dedicated keyboard
PROGRESSIVEENHANCEMENTWEB
Capabilities
Experience
text input required notification
PESEASEGURADEQUELOSUSUARIOS
PUEDANUSARTUPRODUCTO
SINIMPORTARELCONTEXTO.
PWAES
Progressive Responsive
PWAES
Network
Independent
Progressive Responsive
PWAES
Network
Independent
Progressive Responsive App-Like
PWAOAPPNATIVA?
PWAES
Network
Independent
Progressive Responsive App-Like Fresh
PWAES
Network
Independent
Segura
Progressive Responsive App-Like Fresh
PWAES
Discoverable
Network
Independent
Segura
Progressive Responsive App-Like Fresh
PWAES
Discoverable
Network
Independent
Segura Re-engageable
Progressive Responsive App-Like Fresh
PWAES
Discoverable Instalable
Network
Independent
Segura Re-engageable
Progressive Responsive App-Like Fresh
LAAPPVAASEGUIRANDANDOENEL
BROWSER.SÓLOPODRÍAHACERMÁSCOSAS
CUANDOSE“INSTALE”.
WHATWEBCANDO.TODAY
PWAES
Discoverable Instalable Linkeable
Network
Independent
Segura Re-engageable
Progressive Responsive App-Like Fresh
{
"lang": "en",
"short_name": "My App",
"name": "My Totally Awesome App",
"icons": [
{
"src": "img/launcher-icon-2x.png",
"sizes": "96x96",
"type": "image/png"
}, {
"src": "img/launcher-icon-4x.png",
"sizes": "192x192",
"type": "image/png"
}
],
"start_url": "/pwa/?utm_source=homescreen",
"display": "standalone",
"orientation": "portrait",
"background_color": "black"
}
WEBAPPMANIFEST
Meta Tags 2.0
SERVICEWORKER
Actua como servidor proxy entre la web
app, el browser y la conexión (cuando
está disponible)
Solo HTTPS
No tiene acceso al DOM
Solo se aceptan request asyncronicos
Ejecuta separado del sitio
Un solo service worker por alcance
SERVICE WORKERS
PROPIEDADES
PERO…PUEDOUSARLO?
1. if ('serviceWorker' in navigator) {
2. navigator.serviceWorker.register('/service-worker.js')
3. .then(registration => {
4. console.log('Registered:', registration);
5. })
6. .catch(error => {
7. console.log('Registration failed: ', error);
8. });
9. }
index.html
CICLODEVIDA
Service Worker Lifecycle
Inicia la registraciónInstalling
1. self.addEventListener('install', event => {
2. event.waitUntil(
3. caches.open('static-v1').then(cache => {
4. return cache.addAll([
5. '/',
6. '/index.html',
7. '/styles.css',
8. '/main.js',
9. '/fallback.html'
10. ]);
11. })
12. );
13. }
sw.js
Service Worker Lifecycle
Inicia la registraciónInstalling
Service Worker Lifecycle
Inicia la registraciónInstalling
Se completó la registraciónInstalled
Service Worker Lifecycle
Inicia la registraciónActivating
Inicia la registraciónInstalling
Se completó la registraciónInstalled
1. self.addEventListener('activate', event => {
2. var keepList = ['assets-v1'];
3.
4. event.waitUntil(
5. caches.keys().then(function(cacheNameList) {
6. return Promise.all(cacheNameList.map(function(cacheName) {
7. if (keepList.indexOf(cacheName) === -1) {
8. return caches.delete(cacheName);
9. }
10. }));
11. })
12. );
13. }
sw.js
Service Worker Lifecycle
Inicia la registraciónActivating
Ya se pueden escuchar eventosActivated
Inicia la registraciónInstalling
Se completó la registraciónInstalled
Service Worker Lifecycle
Inicia la registraciónActivating
Ya se pueden escuchar eventosActivated
Inicia la registraciónInstalling
Se completó la registraciónInstalled
El SW se está reemplazando por otroRedundant
1. self.addEventListener('fetch', event => {
2. event.respondWith(
3. caches.match(event.request).then(response => {
4. return response || fetch(event.request).catch(() => {
5. return caches.match('/fallback.htm1');
6. });
7. })
8. );
9. }
sw.js
FETCH!
EXPUESTOAJAVASCRIPT
FETCH(),REQUESTYRESPONSE
1. fetch('weather.json')
2. .then(function(response) {
3. if (response.headers.get('content-type') == 'application/json') {
4. return response.json();
5. } else {
6. throw new TypeError();
7. }
8. })
9. .then(processJSON);
index.html
1. self.addEventListener('fetch', event => {
2. event.respondWith(
3. fetch(event.request)
4. );
5. }
sw.js
1. self.addEventListener('fetch', event => {
2. event.respondWith(
3. fetch(event.request)
4. );
5. }
sw.js
1. self.addEventListener('fetch', event => {
2. event.respondWith(
3. fetch(event.request)
4. );
5. }
sw.js
1. self.addEventListener('fetch', event => {
2. event.respondWith(
3. fetch(event.request)
4. );
5. }
sw.js
CACHEAPIS
CACHES API
ANATOMY
REQUEST	(URL) RESPONSE
https://weather.app/index.html <!doctype html>
https://weather.app/script.js console.log('test')
.	.	.	
key / value storage
Cache API
URL-addressable resources
-----or -----
Indexed DB
Other data
PUSHNOTIFICATIONS
1. navigator.serviceWorker.register('sw.js')
2. .then(reg => {
3. return reg.pushManager.getSubscription().then(subscription => {
4. if (subscription) return subscription;
5. return registration.pushManager.subscribe({
6. userVisibleOnly: true, applicationServerKey: appPubkey
7. });
8. });
9. })
index.html
1. self.addEventListener('push', event => {
2. var payload = event.data ? event.data.text() : 'no payload';
3. event.waitUntil(
4. registration.showNotification('WEATHER ADVISORY', {
5. body: payload,
6. icon: 'icon.png'
7. })
8. );
9. }
sw.js
1. self.addEventListener('notificationclick', event => {
2. event.notification.close();
3. event.waitUntil(clients.openWindow('https://weather.app/advisory'));
4. }
sw.js
PROGRESSIVEWEBAPPS
ENWINDOWS
¿COMOHACEUNUSUARIOPARAENCONTRAR
UNAPROGRESSIVEWEBAPP?
AHORAMISMO:STORE&BING
PROGRESSIVEWEBAPPS
¿¡¿ENWINDOWSSTORE?!?
PWASENWINDOWSSTORE
• Presentación activa
PWASENWINDOWSSTORE
• Presentación activa
• Ingestión Pasiva
No hacer nada y Microsoft va a agregar tu PWA automaticamente *
* Se puede no hacerlo usando robots.txt
PWAINGESTIONPROCESS(PASSIVE)
ANULANDOLAINGESTIÓNCONROBOTS.TXT
PWASIN
THESTORE
app.manifest
popula la entrada:
1. name
2. description
3. icons
4. screenshots
DESDELAPERSPECTIVADELUSUARIO,
UNAPWAVAASERUNAAPP.
¡ANUESTROSUSUARIOSNOLES
INTERESAQUETECNOLOGIAUSAMOS!
Quieren usar nuestra app
UNAPWAESSUPERSIMPLEDEHACERY
LOSBENEFICIOSSONIMPORTANTES.
BIT.LY/PWA-WORKSHOP-NETCONF
Github: https://github.com/PWA-espanol/workshop
¡MUCHASGRACIAS!
@nbellocam
10/26/17 11423	al	27	de	Octubre	2017.NET	Conf	UY v2017

Weitere ähnliche Inhalte

Was ist angesagt?

Presentacion diseño web con jquery
Presentacion diseño web con jqueryPresentacion diseño web con jquery
Presentacion diseño web con jquery
Eutobar
 
Manual de jquery en pdf desarrollowebcom
Manual de jquery en pdf desarrollowebcomManual de jquery en pdf desarrollowebcom
Manual de jquery en pdf desarrollowebcom
jo_ram
 
Api De Google Calendar
Api De Google CalendarApi De Google Calendar
Api De Google Calendar
jvelizster
 

Was ist angesagt? (17)

Silex: Microframework y camino fácil de aprender Symfony
Silex: Microframework y camino fácil de aprender SymfonySilex: Microframework y camino fácil de aprender Symfony
Silex: Microframework y camino fácil de aprender Symfony
 
SignalR y dispositivos móviles
SignalR y dispositivos móvilesSignalR y dispositivos móviles
SignalR y dispositivos móviles
 
Opensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackOpensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN Stack
 
La magia de jquery
La magia de jqueryLa magia de jquery
La magia de jquery
 
(Muy breve) Introduccion a jQuery
(Muy breve) Introduccion a jQuery(Muy breve) Introduccion a jQuery
(Muy breve) Introduccion a jQuery
 
Presentacion diseño web con jquery
Presentacion diseño web con jqueryPresentacion diseño web con jquery
Presentacion diseño web con jquery
 
Microservicios sobre MEAN Stack
Microservicios sobre MEAN StackMicroservicios sobre MEAN Stack
Microservicios sobre MEAN Stack
 
Presentacion node
Presentacion nodePresentacion node
Presentacion node
 
Mi app-asp-net-mvc2
Mi app-asp-net-mvc2Mi app-asp-net-mvc2
Mi app-asp-net-mvc2
 
Vue.js: El framework javascript para muggles
Vue.js: El framework javascript para mugglesVue.js: El framework javascript para muggles
Vue.js: El framework javascript para muggles
 
ASP.NET MVC - AJAX
ASP.NET MVC - AJAXASP.NET MVC - AJAX
ASP.NET MVC - AJAX
 
Windows PowerShell para Desarrolladores SharePoint | SolidQ Summit 2012
Windows PowerShell para Desarrolladores SharePoint | SolidQ Summit 2012Windows PowerShell para Desarrolladores SharePoint | SolidQ Summit 2012
Windows PowerShell para Desarrolladores SharePoint | SolidQ Summit 2012
 
Manual de jquery en pdf desarrollowebcom
Manual de jquery en pdf desarrollowebcomManual de jquery en pdf desarrollowebcom
Manual de jquery en pdf desarrollowebcom
 
Api De Google Calendar
Api De Google CalendarApi De Google Calendar
Api De Google Calendar
 
Introduccion silverlight
Introduccion silverlightIntroduccion silverlight
Introduccion silverlight
 
Gulp js php sevilla 28 septiembre 2016
Gulp js   php sevilla 28 septiembre 2016Gulp js   php sevilla 28 septiembre 2016
Gulp js php sevilla 28 septiembre 2016
 
Vue + Typescript: Decorators vs. Extend, Fight!
Vue + Typescript: Decorators vs. Extend, Fight!Vue + Typescript: Decorators vs. Extend, Fight!
Vue + Typescript: Decorators vs. Extend, Fight!
 

Ähnlich wie Progressive Web Apps

Reportes En J Developer Parte 1 Y 2
Reportes En J Developer   Parte 1 Y 2Reportes En J Developer   Parte 1 Y 2
Reportes En J Developer Parte 1 Y 2
Steven Gomez
 

Ähnlich wie Progressive Web Apps (20)

Tecnologías para microservicios
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microservicios
 
Presentacion #bbmnk
Presentacion #bbmnkPresentacion #bbmnk
Presentacion #bbmnk
 
Codemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterCodemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipster
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera API
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apis
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Introducción a Flask
Introducción a FlaskIntroducción a Flask
Introducción a Flask
 
Reportes En J Developer Parte 1 Y 2
Reportes En J Developer   Parte 1 Y 2Reportes En J Developer   Parte 1 Y 2
Reportes En J Developer Parte 1 Y 2
 
Introducción a las Progressive web apps
Introducción a las Progressive web appsIntroducción a las Progressive web apps
Introducción a las Progressive web apps
 
LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"
 
eyeOS: Arquitectura y desarrollo de una aplicación
eyeOS: Arquitectura y desarrollo de una aplicacióneyeOS: Arquitectura y desarrollo de una aplicación
eyeOS: Arquitectura y desarrollo de una aplicación
 
Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2
 
JAVASCRIPT.pptx
JAVASCRIPT.pptxJAVASCRIPT.pptx
JAVASCRIPT.pptx
 
Introducción a AngularJS
Introducción a AngularJS Introducción a AngularJS
Introducción a AngularJS
 
Web sockets
Web socketsWeb sockets
Web sockets
 
ANDROID BOOTCAMP 101: MI PRIMERA APLICACIÓN ANDROID - CÓMO INICIAR UN EMPREND...
ANDROID BOOTCAMP 101: MI PRIMERA APLICACIÓN ANDROID - CÓMO INICIAR UN EMPREND...ANDROID BOOTCAMP 101: MI PRIMERA APLICACIÓN ANDROID - CÓMO INICIAR UN EMPREND...
ANDROID BOOTCAMP 101: MI PRIMERA APLICACIÓN ANDROID - CÓMO INICIAR UN EMPREND...
 
Cv dennys-jose-marquez-reyes-desarrollador-web
Cv dennys-jose-marquez-reyes-desarrollador-webCv dennys-jose-marquez-reyes-desarrollador-web
Cv dennys-jose-marquez-reyes-desarrollador-web
 
Taller integracion jsf spring
Taller integracion jsf springTaller integracion jsf spring
Taller integracion jsf spring
 

Mehr von Nicolás Bello Camilletti

Mehr von Nicolás Bello Camilletti (16)

Novedades en CI/CD
Novedades en CI/CDNovedades en CI/CD
Novedades en CI/CD
 
Progressive web apps
Progressive web appsProgressive web apps
Progressive web apps
 
Personalizando experiencias de usuario con Reinforcement learning y Azure
Personalizando experiencias de usuario con Reinforcement learning y AzurePersonalizando experiencias de usuario con Reinforcement learning y Azure
Personalizando experiencias de usuario con Reinforcement learning y Azure
 
Progressive Web Apps - Workshop
Progressive Web Apps - WorkshopProgressive Web Apps - Workshop
Progressive Web Apps - Workshop
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
 
Introducción a .NET Core y Docker
Introducción a .NET Core y DockerIntroducción a .NET Core y Docker
Introducción a .NET Core y Docker
 
Creando una SPA con Angular y ASP.NET Core
Creando una SPA con Angular y ASP.NET CoreCreando una SPA con Angular y ASP.NET Core
Creando una SPA con Angular y ASP.NET Core
 
Creando una SPA con Angular 2 y ASP.NET Core
Creando una SPA con Angular 2 y ASP.NET CoreCreando una SPA con Angular 2 y ASP.NET Core
Creando una SPA con Angular 2 y ASP.NET Core
 
Creando una SPA con Angular 2 y ASP.NET Core
Creando una SPA con Angular 2 y ASP.NET CoreCreando una SPA con Angular 2 y ASP.NET Core
Creando una SPA con Angular 2 y ASP.NET Core
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Clase Html + CSS
Clase Html + CSSClase Html + CSS
Clase Html + CSS
 
Windows Azure DPE Toolkits
Windows Azure DPE ToolkitsWindows Azure DPE Toolkits
Windows Azure DPE Toolkits
 
Grails
GrailsGrails
Grails
 
Groovy.v2
Groovy.v2Groovy.v2
Groovy.v2
 
Groovy
GroovyGroovy
Groovy
 

Kürzlich hochgeladen

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Kürzlich hochgeladen (11)

EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 

Progressive Web Apps