service workers e o futuro das aplicações no seu browser

36
SERVICE WORKERS E O FUTURO DAS APLICAÇÕES NO SEU BROWSER

Upload: eduardo-matos

Post on 08-Feb-2017

271 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Service workers e o futuro das aplicações no seu browser

SERVICE WORKERSE O FUTURO DAS APLICAÇÕES

NO SEU BROWSER

Page 2: Service workers e o futuro das aplicações no seu browser

@eduardojmatos eduardomatos.me

OI, EU SOU O EDU

Page 3: Service workers e o futuro das aplicações no seu browser

Soluções de comunicação que aproximam médicos e pacientes

Page 4: Service workers e o futuro das aplicações no seu browser

O QUE É UM WORKER

Page 5: Service workers e o futuro das aplicações no seu browser

Primeira definição de Worker surgiu com o WebWorkers

http://www.html5rocks.com/en/tutorials/workers/basics/

Page 6: Service workers e o futuro das aplicações no seu browser

BROWSER EXECUTANDO TAREFAS

SEM BLOQUEAR A INTERFACE

Page 7: Service workers e o futuro das aplicações no seu browser
Page 8: Service workers e o futuro das aplicações no seu browser

BROWSER SUPPORT

Page 9: Service workers e o futuro das aplicações no seu browser

REGRAS COMUNS DE UM WORKER

• Não acessa o DOM

• Não acessa o window

• Não acessa o document

• Acessa o navigator

• Acessa o location (ready-only)

Page 10: Service workers e o futuro das aplicações no seu browser

E O SERVICE WORKER?

Page 11: Service workers e o futuro das aplicações no seu browser

SERVICE WORKER

• Usa o mesmo conceito do WebWorker de isolar execução de um script

• Controla programaticamente o cache da sua aplicação

• Serve como um proxy da sua aplicação

Page 12: Service workers e o futuro das aplicações no seu browser
Page 13: Service workers e o futuro das aplicações no seu browser

OK, E AÍ?

Page 14: Service workers e o futuro das aplicações no seu browser

OFFLINE CONTROL

Page 15: Service workers e o futuro das aplicações no seu browser

APPLICATION CACHE

Page 16: Service workers e o futuro das aplicações no seu browser

A forma de cachear arquivos parecia simples...http://diveintohtml5.info/offline.html

Page 17: Service workers e o futuro das aplicações no seu browser

CACHE MANIFEST

# Versão 1.0 # Sempre definimos versão ou uma - logo abaixo vou explicar o porquê

# aqui vão arquivos/caminhos a serem cacheados

CACHE /main/home /main/app.js

# aqui vão arquivos/caminhos que sempre "buscarão" a rede

NETWORK /files/download/1 /files/download/2

arquivo manifest.appcache

Page 18: Service workers e o futuro das aplicações no seu browser

PROBLEMAS…• arquivos com parâmetros (querystrings) são considerados recursos diferentes;

• o html com o atributo manifesto sempre será cacheado;

• você precisa declarar TODOS os recursos do site pra que o offline funcione - uma alternativa é usar no NETWORK o * pra que ele considere tudo o que não foi listado dentro de CACHE ou FALLBACK como recurso disponível online;

• pra mudar algum asset que foi atualizado no servidor, você precisa gerar um novo manifesto com algum item de controle no topo do arquivo (como por exemplo uma data ou uma version - como eu fiz no exemplo anterior);

• se há alterações, o usuário precisa atualizar a página pra recebê-las;

• nada é controlado por API, tudo fica no arquivo;

• não dá pra atualizar UM arquivo. Se mudar o manifesto TUDO vai ser baixado de novo;

• se algo do FALLBACK fôr carregado online, sempre esse recurso será carregado online.

Page 19: Service workers e o futuro das aplicações no seu browser
Page 20: Service workers e o futuro das aplicações no seu browser

APPCACHE IS A DOUCHEBAG

http://alistapart.com/article/application-cache-is-a-douchebag http://sergiolopes.org/palestra-appcache-html5-offline

http://eduardomatos.me/appcache-manifest-e-serviceworker-as-partes-boas-e-ruins

Page 21: Service workers e o futuro das aplicações no seu browser

VAI SERVICE WORKER!!!!!

Page 22: Service workers e o futuro das aplicações no seu browser
Page 23: Service workers e o futuro das aplicações no seu browser
Page 24: Service workers e o futuro das aplicações no seu browser
Page 25: Service workers e o futuro das aplicações no seu browser

// main.js

if ('serviceWorker' in navigator) {

navigator.serviceWorker.register('/sw-test/sw.js', { scope: '/sw-test/' }).then(function (reg) { console.log(‘Success!. Scope is ' + reg.scope); }).catch(function (error) { console.log(‘Ops: ' + error); });

};

Page 26: Service workers e o futuro das aplicações no seu browser

// /sw-test/sw.js

this.addEventListener('install', function (event) { event.waitUntil( caches.open('v1').then(function (cache) { return cache.addAll([ '/sw-test/', '/sw-test/index.html', '/sw-test/style.css', '/sw-test/app.js' ]); }) ); });

Page 27: Service workers e o futuro das aplicações no seu browser

// /sw-test/sw.js

this.addEventListener('fetch', function (event) { event.respondWith( caches.match(event.request).catch(function () { return fetch(event.request); }) ); });

Page 28: Service workers e o futuro das aplicações no seu browser
Page 29: Service workers e o futuro das aplicações no seu browser

EXEMPLOS DE SERVICE WORKER

https://developers.google.com/web/fundamentals/getting-started/your-first-offline-web-app/

https://jakearchibald.github.io/trained-to-thrill/

https://www.theguardian.com/info

https://refresh.sprite.com.br/ (brazuca! @lnfnunes)

Page 30: Service workers e o futuro das aplicações no seu browser

https://developers.google.com/web/fundamentals/getting-started/your-first-offline-web-app

Page 31: Service workers e o futuro das aplicações no seu browser

https://refresh.sprite.com.br

Page 32: Service workers e o futuro das aplicações no seu browser

E A SEGURANÇA DISSO?

• Funciona apenas com https

• Escopo por domains

Page 33: Service workers e o futuro das aplicações no seu browser

ONDE FUNCIONA?

https://jakearchibald.github.io/isserviceworkerready/

Page 34: Service workers e o futuro das aplicações no seu browser

BackgroundSync *specs: https://slightlyoff.github.io/BackgroundSync/spec/

Push Notifications *specs: https://w3c.github.io/push-api/

Geofencing [futuramente]

Bluetooth [futuramente]

FUTURO

Page 35: Service workers e o futuro das aplicações no seu browser

PORQUE ESSE HYPE TODO?

• JavaScript chegando no app nativo

• Evolução e maior controle das aplicações

• Acesso a funcionalidades do sistema do usuário (bluetooth, push notifications...)