SlideShare uma empresa Scribd logo
1 de 77
Baixar para ler offline
nobackend e
offlinefirstjoselito.ninja // @joselitojunior1 // alagoasdevday.com.br
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
Vamos falar sobre
Internet
TheStateofLTE,OpenSignal.Acessoem17/04/2014
4G?
Alagoas:
- Maceió
Pernambuco:
- Recife
- Jaboatão
4G?
Minas Gerais: 4 Cidades
Rio de Janeiro: 4 Cidades
São Paulo: 8 Cidades
Demais estados: capitais
Ter internet
otempotodo
é normal?
Estar Offline
é comumbem mais comum
do que parece
Estar Offline
Nãoé um problema
Estar Offline
Nãodeveriaser um
problema
DesktopConnectedWorld
Mobile First
Offline First
Offline First
é sobre UX
Offline First
é sobre PESSOAS
+ Pessoas
+ Usuários
+ $
Mudanças
Offline tem que ser
mais do quetratar erros
Trate arede de dados como uma
funcionalidade
Não
perderás
informaçãoPrimeiro mandamento do Offline First
Armazenamento
» localStorage
» sessionStorage
» WebSQL
» IndexedDB
Armazenamento
Sincronize ao invés de salvar!
Armazenamento
Sincronize ao invés de salvar!
» Se o usuário está online, envie e
sincronize com servidor
» Se não, salve localmente e sincronize
depois!
Armazenamento
Sincronize ao invés de salvar!
Armazenamento
Sincronize ao invés de salvar!
Use o StorageEvent!
- key
- oldValue
- newValue
- url
Armazenamento
Sincronize ao invés de salvar!
Tem jeito mais fácil? Tem.
Falaremos em breve.
ServiceWorkers
É um Web Worker que tomou muito Whey.
Roda no background do navegador e não tem
acesso ao DOM.
ServiceWorkers
É um Web Worker que tomou muito Whey.
Roda no background do navegador e não tem
acesso ao DOM.
Rende outra talk inteira.
ServiceWorkers
É 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.
AppCache
Poderosissí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.
AppCache
CACHE MANIFEST
index.html
stylesheet.css
images/logo.png
scripts/main.js
http://cdn.example.com/scripts/main.js
AppCache
Podemos dividir em 3 seções principais:
» CACHE
» NETOWRK
» FALLBACK
AppCache
CACHE
Aquivos abaixo do cabeçalho CACHE (ou sem
cabeçalho, é a seção default) serão
armazenados na primeira vez que forem
acessados.
AppCache
NETWORK
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:
*
AppCache
FALLBACK
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.html
cardapio/pizzas/calabresa.jpg cardapio/pizza.jpg
cardapio/pizzas/ cardapio/pizza.jpg
AppCache
Cuidados
» 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.
Offline First❤
SPA
StaticFront-end driven
Eaparte fácil?
noBackend
"noBackend"
Não é não de "não existe"
É não de "não se preocupe"
localStorage.setItem("chave", "valor");
app.login(user, pass);
app.signUp(email, user, pass);
Email
sendEmail({
to: "marilene@alagoasdevday.com.br",
subject: "Hoje à noitenn…",
content: "<h1>Olá Marilene</h1><p>…</
p>",
attachments: [ 'vinhos.pdf' ]
});
{o/}Dreamcode
APIs do Hoodie
var hoodie = new Hoodie(url);
» hoodie.store
» hoodie.account
» hoodie.id()
» on()
» online ou offline
» change, update
Plugins do Hoodie
AppCache Nanny
Automatização completa do manifesto!
» hoodie install appcache
» npm install -S appcache-nanny
» hoodie.appCache.start();
Parse e Firebase
» Comerciais e mais robustos (BaaS)
» Armazenamento sob demanda
» Plugins
» Push (local) e outros serviços
API Parse
var user = new Parse.User();
user.set("username", "my name");
user.set("password", "my pass");
user.set("email", "email@example.com");
user.set("phone", "415-392-0202");
user.signUp(null, {
success: function(user) { ... },
error: function(user, error) { ... }
});
API Parse
var base64 =
"V29ya2luZyBhdCBQYXJzZSBpcyBncmVhdCE=";
var file = new Parse.File("myfile.txt",
{ base64: base64 });
API Parse
var 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
});
atwood's law
“Any application that can be written in
JavaScript, will eventually be written in
JavaScript.”
Jeff Atwood
E isso é só o começo
offlinefirst.org
nobackend.org
Isso étudo pessoal!
Obrigado!JoselitoJúnior
joselito.ninja
@joselitojunior1
Slides em: http://jfnj.me/
addnobackendoffline

Mais conteúdo relacionado

Destaque

Diego Narducci - React + Angular
Diego Narducci - React + AngularDiego Narducci - React + Angular
Diego Narducci - React + AngularDiego Narducci
 
Apresentação do hotel - Nautic Native Hotels and Spa, Lda
Apresentação do hotel - Nautic Native Hotels and Spa, LdaApresentação do hotel - Nautic Native Hotels and Spa, Lda
Apresentação do hotel - Nautic Native Hotels and Spa, LdaH23webmarketing
 
JavaScript e suas tendências no mercado de TI
JavaScript e suas tendências no mercado de TIJavaScript e suas tendências no mercado de TI
JavaScript e suas tendências no mercado de TIFred Souza
 
Ampliando suas fronteiras com Node-Webkit
Ampliando suas fronteiras com Node-WebkitAmpliando suas fronteiras com Node-Webkit
Ampliando suas fronteiras com Node-WebkitBeto Muniz
 
Performance com AngularJS
Performance com AngularJSPerformance com AngularJS
Performance com AngularJSWilson Mendes
 
Offline apps Using Ionic Framework and PouchDB
Offline apps  Using Ionic Framework and PouchDBOffline apps  Using Ionic Framework and PouchDB
Offline apps Using Ionic Framework and PouchDBAlvaro Viebrantz
 
Usando PushWoosh com Ionic Framework
Usando PushWoosh com Ionic FrameworkUsando PushWoosh com Ionic Framework
Usando PushWoosh com Ionic FrameworkEmerson Thompson
 
Opções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e ArquiteturasOpções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e ArquiteturasJose Papo, MSc
 
Projeto Arduino - Hardware para fazer coisas legais - FOCAI
Projeto Arduino - Hardware para fazer coisas legais - FOCAIProjeto Arduino - Hardware para fazer coisas legais - FOCAI
Projeto Arduino - Hardware para fazer coisas legais - FOCAIAlmir Mendes
 
[React Native Tutorial] Lecture 3: More on ES6/ES2015
[React Native Tutorial] Lecture 3: More on ES6/ES2015[React Native Tutorial] Lecture 3: More on ES6/ES2015
[React Native Tutorial] Lecture 3: More on ES6/ES2015Kobkrit Viriyayudhakorn
 
[React-Native Tutorial] Lecture 8: Midterm Exam Discussion, Feedback, and Ter...
[React-Native Tutorial] Lecture 8: Midterm Exam Discussion, Feedback, and Ter...[React-Native Tutorial] Lecture 8: Midterm Exam Discussion, Feedback, and Ter...
[React-Native Tutorial] Lecture 8: Midterm Exam Discussion, Feedback, and Ter...Kobkrit Viriyayudhakorn
 
[React-Native Tutorial 10] Camera Roll / Gallery / Camera / Native Modules by...
[React-Native Tutorial 10] Camera Roll / Gallery / Camera / Native Modules by...[React-Native Tutorial 10] Camera Roll / Gallery / Camera / Native Modules by...
[React-Native Tutorial 10] Camera Roll / Gallery / Camera / Native Modules by...Kobkrit Viriyayudhakorn
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarFilipe Falcão
 
Desenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDesenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDenis Vieira
 
[React Native Tutorial] Lecture 6: Component, Props, and Network
[React Native Tutorial] Lecture 6: Component, Props, and Network[React Native Tutorial] Lecture 6: Component, Props, and Network
[React Native Tutorial] Lecture 6: Component, Props, and NetworkKobkrit Viriyayudhakorn
 
Running BabelJS on Windows (Try ES6 on Windows)
Running BabelJS on Windows (Try ES6 on Windows)Running BabelJS on Windows (Try ES6 on Windows)
Running BabelJS on Windows (Try ES6 on Windows)Kobkrit Viriyayudhakorn
 
[React Native Tutorial] Lecture 5: Input and State
[React Native Tutorial] Lecture 5: Input and State[React Native Tutorial] Lecture 5: Input and State
[React Native Tutorial] Lecture 5: Input and StateKobkrit Viriyayudhakorn
 

Destaque (20)

16 encontro locaweb
16 encontro locaweb16 encontro locaweb
16 encontro locaweb
 
Diego Narducci - React + Angular
Diego Narducci - React + AngularDiego Narducci - React + Angular
Diego Narducci - React + Angular
 
Como criar uma fábrica de produtos
Como criar uma fábrica de produtosComo criar uma fábrica de produtos
Como criar uma fábrica de produtos
 
Apresentação do hotel - Nautic Native Hotels and Spa, Lda
Apresentação do hotel - Nautic Native Hotels and Spa, LdaApresentação do hotel - Nautic Native Hotels and Spa, Lda
Apresentação do hotel - Nautic Native Hotels and Spa, Lda
 
JavaScript e suas tendências no mercado de TI
JavaScript e suas tendências no mercado de TIJavaScript e suas tendências no mercado de TI
JavaScript e suas tendências no mercado de TI
 
Ampliando suas fronteiras com Node-Webkit
Ampliando suas fronteiras com Node-WebkitAmpliando suas fronteiras com Node-Webkit
Ampliando suas fronteiras com Node-Webkit
 
Performance com AngularJS
Performance com AngularJSPerformance com AngularJS
Performance com AngularJS
 
Offline apps Using Ionic Framework and PouchDB
Offline apps  Using Ionic Framework and PouchDBOffline apps  Using Ionic Framework and PouchDB
Offline apps Using Ionic Framework and PouchDB
 
Usando PushWoosh com Ionic Framework
Usando PushWoosh com Ionic FrameworkUsando PushWoosh com Ionic Framework
Usando PushWoosh com Ionic Framework
 
Opções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e ArquiteturasOpções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e Arquiteturas
 
Projeto Arduino - Hardware para fazer coisas legais - FOCAI
Projeto Arduino - Hardware para fazer coisas legais - FOCAIProjeto Arduino - Hardware para fazer coisas legais - FOCAI
Projeto Arduino - Hardware para fazer coisas legais - FOCAI
 
[React Native Tutorial] Lecture 3: More on ES6/ES2015
[React Native Tutorial] Lecture 3: More on ES6/ES2015[React Native Tutorial] Lecture 3: More on ES6/ES2015
[React Native Tutorial] Lecture 3: More on ES6/ES2015
 
[React-Native Tutorial] Lecture 8: Midterm Exam Discussion, Feedback, and Ter...
[React-Native Tutorial] Lecture 8: Midterm Exam Discussion, Feedback, and Ter...[React-Native Tutorial] Lecture 8: Midterm Exam Discussion, Feedback, and Ter...
[React-Native Tutorial] Lecture 8: Midterm Exam Discussion, Feedback, and Ter...
 
[React-Native Tutorial 10] Camera Roll / Gallery / Camera / Native Modules by...
[React-Native Tutorial 10] Camera Roll / Gallery / Camera / Native Modules by...[React-Native Tutorial 10] Camera Roll / Gallery / Camera / Native Modules by...
[React-Native Tutorial 10] Camera Roll / Gallery / Camera / Native Modules by...
 
Workshop - Ionic + firebase
Workshop - Ionic + firebaseWorkshop - Ionic + firebase
Workshop - Ionic + firebase
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizar
 
Desenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDesenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full Javascript
 
[React Native Tutorial] Lecture 6: Component, Props, and Network
[React Native Tutorial] Lecture 6: Component, Props, and Network[React Native Tutorial] Lecture 6: Component, Props, and Network
[React Native Tutorial] Lecture 6: Component, Props, and Network
 
Running BabelJS on Windows (Try ES6 on Windows)
Running BabelJS on Windows (Try ES6 on Windows)Running BabelJS on Windows (Try ES6 on Windows)
Running BabelJS on Windows (Try ES6 on Windows)
 
[React Native Tutorial] Lecture 5: Input and State
[React Native Tutorial] Lecture 5: Input and State[React Native Tutorial] Lecture 5: Input and State
[React Native Tutorial] Lecture 5: Input and State
 

Semelhante a noBackend e Offline First: foque em criar experiências

Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisrafaelberlanda
 
Aprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosAprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosRichard Barros
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 pythonTiago
 
TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
 
Webinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcadoWebinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcadoEmbarcados
 
Start-ups em grandes empresas
Start-ups em grandes empresasStart-ups em grandes empresas
Start-ups em grandes empresasAntonio Silveira
 
Seminário Drupal São Paulo
Seminário Drupal São PauloSeminário Drupal São Paulo
Seminário Drupal São Paulopedrofaria
 
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...Gleicon Moraes
 
Organizando a casa. o front end do jeitinho que a mamãe gosta
Organizando a casa. o front end do jeitinho que a mamãe gostaOrganizando a casa. o front end do jeitinho que a mamãe gosta
Organizando a casa. o front end do jeitinho que a mamãe gostaJohnathan Cardoso
 
Projeto TCOS - III ENSOL
Projeto TCOS - III ENSOLProjeto TCOS - III ENSOL
Projeto TCOS - III ENSOLAécio Pires
 
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...Gleicon Moraes
 
Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8 Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8 Acquia
 
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...iMasters
 
Plataforma Zope Plone na PGR
Plataforma Zope Plone na PGRPlataforma Zope Plone na PGR
Plataforma Zope Plone na PGRLucas Brasilino
 
Ajax para quem_ouviu_falar
Ajax para quem_ouviu_falarAjax para quem_ouviu_falar
Ajax para quem_ouviu_falarCharleston Anjos
 
Resolvendo problemas do dia a-dia com o windows server
Resolvendo problemas do dia a-dia com o windows serverResolvendo problemas do dia a-dia com o windows server
Resolvendo problemas do dia a-dia com o windows serverDanilo Augusto Leite
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsVinicius Reis
 
O Que é Software Livre E Por Que Isso é Importante Para Você
O Que é Software Livre E Por Que Isso é Importante Para VocêO Que é Software Livre E Por Que Isso é Importante Para Você
O Que é Software Livre E Por Que Isso é Importante Para VocêJurmir Canal Neto
 

Semelhante a noBackend e Offline First: foque em criar experiências (20)

Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portais
 
Aprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosAprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard Barros
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 python
 
TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direito
 
Webinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcadoWebinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcado
 
Start-ups em grandes empresas
Start-ups em grandes empresasStart-ups em grandes empresas
Start-ups em grandes empresas
 
Seminário Drupal São Paulo
Seminário Drupal São PauloSeminário Drupal São Paulo
Seminário Drupal São Paulo
 
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
 
Organizando a casa. o front end do jeitinho que a mamãe gosta
Organizando a casa. o front end do jeitinho que a mamãe gostaOrganizando a casa. o front end do jeitinho que a mamãe gosta
Organizando a casa. o front end do jeitinho que a mamãe gosta
 
Projeto TCOS - III ENSOL
Projeto TCOS - III ENSOLProjeto TCOS - III ENSOL
Projeto TCOS - III ENSOL
 
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
 
Oracle
OracleOracle
Oracle
 
Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8 Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8
 
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
 
Plataforma Zope Plone na PGR
Plataforma Zope Plone na PGRPlataforma Zope Plone na PGR
Plataforma Zope Plone na PGR
 
Ajax para quem_ouviu_falar
Ajax para quem_ouviu_falarAjax para quem_ouviu_falar
Ajax para quem_ouviu_falar
 
Resolvendo problemas do dia a-dia com o windows server
Resolvendo problemas do dia a-dia com o windows serverResolvendo problemas do dia a-dia com o windows server
Resolvendo problemas do dia a-dia com o windows server
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
 
Novas Fronteiras
Novas FronteirasNovas Fronteiras
Novas Fronteiras
 
O Que é Software Livre E Por Que Isso é Importante Para Você
O Que é Software Livre E Por Que Isso é Importante Para VocêO Que é Software Livre E Por Que Isso é Importante Para Você
O Que é Software Livre E Por Que Isso é Importante Para Você
 

noBackend e Offline First: foque em criar experiências