nobackend e offline first: foque em criar experiências

77
nobackend e offlinefirst joselito.ninja // @joselitojunior1 // alagoasdevday.com.br

Upload: joselito-nascimento

Post on 02-Aug-2015

256 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: noBackend e Offline First: foque em criar experiências

nobackend eofflinefirstjoselito.ninja // @joselitojunior1 // alagoasdevday.com.br

Page 2: noBackend e Offline First: foque em criar experiências

Olá, meu nomeé Joselito Júnior

» Modelo e atriz

» Instrutor, palestrante

» Vencedor de hackathon profissional

» Fundador do GDG Recife

» Fã de Fórmula 1

» Apaixonado por entender e resolver

Page 3: noBackend e Offline First: foque em criar experiências
Page 4: noBackend e Offline First: foque em criar experiências

Vamos falar sobre

Internet

Page 5: noBackend e Offline First: foque em criar experiências

The State of LTE, OpenSignal. Acesso em 17/04/2014

Page 6: noBackend e Offline First: foque em criar experiências

4G?Alagoas:- Maceió

Pernambuco:- Recife- Jaboatão

Page 7: noBackend e Offline First: foque em criar experiências

4G?Minas Gerais: 4 CidadesRio de Janeiro: 4 CidadesSão Paulo: 8 Cidades

Demais estados: capitais

Page 8: noBackend e Offline First: foque em criar experiências
Page 9: noBackend e Offline First: foque em criar experiências
Page 10: noBackend e Offline First: foque em criar experiências
Page 11: noBackend e Offline First: foque em criar experiências

Ter interneto tempo todo

é normal?

Page 12: noBackend e Offline First: foque em criar experiências
Page 13: noBackend e Offline First: foque em criar experiências
Page 14: noBackend e Offline First: foque em criar experiências
Page 15: noBackend e Offline First: foque em criar experiências

Estar Offline

é comumbem mais comum do que parece

Page 16: noBackend e Offline First: foque em criar experiências

Estar Offline

Nãoé um problema

Page 17: noBackend e Offline First: foque em criar experiências

Estar Offline

Nãodeveria ser um problema

Page 18: noBackend e Offline First: foque em criar experiências

Desktop Connected World

Page 19: noBackend e Offline First: foque em criar experiências

Mobile First

Page 20: noBackend e Offline First: foque em criar experiências

Offline First

Page 21: noBackend e Offline First: foque em criar experiências

Offline Firsté sobre UX

Page 22: noBackend e Offline First: foque em criar experiências

Offline Firsté sobre PESSOAS

Page 23: noBackend e Offline First: foque em criar experiências

+ Pessoas+ Usuários

+ $

Page 24: noBackend e Offline First: foque em criar experiências

Mudanças

Page 25: noBackend e Offline First: foque em criar experiências

Offline tem que sermais do que tratar erros

Page 26: noBackend e Offline First: foque em criar experiências

Trate a rede de dados como uma

funcionalidade

Page 27: noBackend e Offline First: foque em criar experiências
Page 28: noBackend e Offline First: foque em criar experiências

NãoperderásinformaçãoPrimeiro mandamento do Offline First

Page 29: noBackend e Offline First: foque em criar experiências

Armazenamento» localStorage

» sessionStorage

» WebSQL

» IndexedDB

Page 30: noBackend e Offline First: foque em criar experiências

ArmazenamentoSincronize ao invés de salvar!

Page 31: noBackend e Offline First: foque em criar experiências

ArmazenamentoSincronize ao invés de salvar!

» Se o usuário está online, envie e sincronize com servidor

» Se não, salve localmente e sincronize depois!

Page 32: noBackend e Offline First: foque em criar experiências

ArmazenamentoSincronize ao invés de salvar!

Page 33: noBackend e Offline First: foque em criar experiências

ArmazenamentoSincronize ao invés de salvar!

Use o StorageEvent!- key- oldValue- newValue- url

Page 34: noBackend e Offline First: foque em criar experiências

ArmazenamentoSincronize ao invés de salvar!

Tem jeito mais fácil? Tem.

Falaremos em breve.

Page 35: noBackend e Offline First: foque em criar experiências

Service WorkersÉ um Web Worker que tomou muito Whey. Roda no background do navegador e não tem acesso ao DOM.

Page 36: noBackend e Offline First: foque em criar experiências

Service WorkersÉ um Web Worker que tomou muito Whey. Roda no background do navegador e não tem acesso ao DOM.

Rende outra talk inteira.

Page 37: noBackend e Offline First: foque em criar experiências

Service WorkersÉ um Web Worker que tomou muito Whey. Roda no background do navegador e não tem acesso ao DOM.

Rende outra talk inteira.

Por exemplo, essa: Offline Web do jeito certo com ServiceWorkers, Sérgio Lopes.

Page 38: noBackend e Offline First: foque em criar experiências

App CachePoderosissímo e um grande filho da p*ta.

<html manifest="offline.appcache">

O manifesto deve estar em todas as páginas que você desejam que devem se cacheadas.

Page 39: noBackend e Offline First: foque em criar experiências

App CacheCACHE MANIFESTindex.htmlstylesheet.cssimages/logo.pngscripts/main.jshttp://cdn.example.com/scripts/main.js

Page 40: noBackend e Offline First: foque em criar experiências

App CachePodemos dividir em 3 seções principais:

» CACHE

» NETOWRK

» FALLBACK

Page 41: noBackend e Offline First: foque em criar experiências

App CacheCACHE

Aquivos abaixo do cabeçalho CACHE (ou sem cabeçalho, é a seção default) serão armazenados na primeira vez que forem acessados.

Page 42: noBackend e Offline First: foque em criar experiências

App CacheNETWORK

Aqui que começa a confusão.

Arquivos listados aqui podem vir do servidor se eles não estão no cache.

Na maioria dos casos, usa-se *, para todas as páginas.

NETWORK:*

Page 43: noBackend e Offline First: foque em criar experiências

App CacheFALLBACK

Os arquivos na seção de fallback tem dois "parâmetros". O primeiro, o arquivo original (ou pasta), do servidor. O segundo, o arquivo que vai substituir os arquivos.

FALLBACK:/ fallback.htmlcardapio/pizzas/calabresa.jpg cardapio/pizza.jpgcardapio/pizzas/ cardapio/pizza.jpg

Page 44: noBackend e Offline First: foque em criar experiências
Page 45: noBackend e Offline First: foque em criar experiências

App CacheCuidados

» O cache tem prioridade ao que está no servidor.

» O manifesto só será atualizado se o conteúdo dele for alterado.

» Arquivos não cacheados nao vão carregar em páginas cacheadas

» E mais: Application Cache is a Douchebag, Jake Archibald.

Page 46: noBackend e Offline First: foque em criar experiências

Offline First ❤

SPAStaticFront-end driven

Page 47: noBackend e Offline First: foque em criar experiências

E a parte fácil?

Page 48: noBackend e Offline First: foque em criar experiências

noBackend

Page 49: noBackend e Offline First: foque em criar experiências

"noBackend"

Page 50: noBackend e Offline First: foque em criar experiências

Não é não de "não existe"É não de "não se preocupe"

Page 51: noBackend e Offline First: foque em criar experiências

localStorage.setItem("chave", "valor");

Page 52: noBackend e Offline First: foque em criar experiências

app.login(user, pass);

Page 53: noBackend e Offline First: foque em criar experiências

app.signUp(email, user, pass);

Page 54: noBackend e Offline First: foque em criar experiências

EmailsendEmail({ to: "[email protected]", subject: "Hoje à noite\n\n…", content: "<h1>Olá Marilene</h1><p>…</p>", attachments: [ 'vinhos.pdf' ]});

Page 55: noBackend e Offline First: foque em criar experiências

{\o/}Dreamcode

Page 56: noBackend e Offline First: foque em criar experiências
Page 57: noBackend e Offline First: foque em criar experiências
Page 58: noBackend e Offline First: foque em criar experiências
Page 59: noBackend e Offline First: foque em criar experiências
Page 60: noBackend e Offline First: foque em criar experiências
Page 61: noBackend e Offline First: foque em criar experiências
Page 62: noBackend e Offline First: foque em criar experiências
Page 63: noBackend e Offline First: foque em criar experiências
Page 64: noBackend e Offline First: foque em criar experiências
Page 65: noBackend e Offline First: foque em criar experiências

APIs do Hoodievar hoodie = new Hoodie(url);

» hoodie.store

» hoodie.account

» hoodie.id()

» on()

» online ou offline

» change, update

Page 66: noBackend e Offline First: foque em criar experiências

Plugins do HoodieAppCache Nanny

Automatização completa do manifesto!

» hoodie install appcache

» npm install -S appcache-nanny

» hoodie.appCache.start();

Page 67: noBackend e Offline First: foque em criar experiências

Parse e Firebase» Comerciais e mais robustos (BaaS)

» Armazenamento sob demanda

» Plugins

» Push (local) e outros serviços

Page 68: noBackend e Offline First: foque em criar experiências

API Parsevar user = new Parse.User();user.set("username", "my name");user.set("password", "my pass");user.set("email", "[email protected]");

user.set("phone", "415-392-0202");

user.signUp(null, { success: function(user) { ... }, error: function(user, error) { ... }});

Page 69: noBackend e Offline First: foque em criar experiências

API Parsevar base64 = "V29ya2luZyBhdCBQYXJzZSBpcyBncmVhdCE=";var file = new Parse.File("myfile.txt", { base64: base64 });

Page 70: noBackend e Offline First: foque em criar experiências

API Parsevar parseFile = new Parse.File("myfile.zzz", fileData, "image/png");

parseFile.save().then(function() { // Imagem salva}, function(error) { // Ou ocorreu um erro ou a imagem não foi enviada ao Parse});

Page 71: noBackend e Offline First: foque em criar experiências
Page 72: noBackend e Offline First: foque em criar experiências

atwood's law“Any application that can be written in JavaScript, will eventually be written in JavaScript.”Jeff Atwood

Page 73: noBackend e Offline First: foque em criar experiências

E isso é só o começo

Page 74: noBackend e Offline First: foque em criar experiências

offlinefirst.org

Page 75: noBackend e Offline First: foque em criar experiências

nobackend.org

Page 76: noBackend e Offline First: foque em criar experiências

Isso é tudo pessoal!

Page 77: noBackend e Offline First: foque em criar experiências

Obrigado!Joselito Júniorjoselito.ninja@joselitojunior1

Slides em: http://jfnj.me/addnobackendoffline