Quem é a Jéssica?
Trabalho há mais de 7 anos com
desenvolvimento Web;
Líder de desenvolvimento na
empresa onde trabalha;
Co-host do podcast PodProgramar;
Por que falar sobre PWA e React?
Uma ponte que
conecta diversas
aplicações.
O que é uma API?
O que é uma PWA?
É um acrônimo para Progressive
Web Apps, ou Aplicações
Web Progressivas.
Desenvolver com melhoria
progressiva é um paradigma em
que a aplicação deverá estar
disponível para todos.
PWA - Requisitos e Características
Deve usar HTTPS;
Deve ter Layout Responsivo;
Deve funcionar Offline ou em conexões lentas;
Deve ser Cross-Browser;
Deve ser possível compartilhar através de uma URL;
Deve permitir ao usuário adicionar um atalho;
Deve ter um Service Worker;
Service Worker?
Basicamente um arquivo javascript com instruções;
Atua como um proxy entre a aplicação web, o navegador e a
internet (quando disponível);
Principais funções:
- Criar experiências offline;
- Interceptar requisições de rede;
- Tomar medidas de acordo com a disponibilidade da rede;
- Atualizar ativos no servidor;
SPA
Aplicação de Página Única (Single-Page Application);
Usuário tem uma experiência próxima a de uma aplicação
desktop;
Um único carregamento de HTML + Javascript + CSS;
Os dados adicionais são carregados conforme
necessidade;
Por que criar uma PWA?
Desenvolver seguindo as melhores práticas de mercado;
Performance cria engajamento entre os usuários;
Conversão dos usuários;
Tudo em um único produto;
Cases de sucesso
76% aumento de conversões
30% em crescimento de usuários
ativos no Android
14% em crescimento de usuários
ativos no iOS
Fonte: https://developers.google.com/web/showcase/
Cases de Sucesso
Tempo de carregamento passou
de 11 segundos para apenas 4.
A versão PWA é 90% menor que
o APP nativo para Android.
Fonte:
https://developers.google.com/web/showcase/
Vamos falar de Web Components
São trechos de código HTML+CSS+Javascript
reaproveitáveis;
Existem ferramentas para facilitar a criação de
componentes:
Vue.js, React, Angular...
React?
Ferramenta especializada em criar componentes;
Criada pela equipe do Instagram antes da compra pelo
Facebook;
Trabalha com Virtual-DOM;
Por que utilizar React?
Popularidade e comunidade em crescimento;
Quase 110 mil stars no Github;
Curva de aprendizagem;
Material de apoio;
Escrever aplicações nativas com React Native;
Virtual-DOM?
Técnica conceitualmente simples, porém complexa de
aplicar;
Manipulação do objeto e não o DOM verdadeiro;
React facilita a manipulação e criação de
elementos DOM no javascript;
npm
Gerenciador de pacotes
para o Javascript;
Definição do APP
Feed de notícias;
Fonte de notícias: API do Hacker News;
Possibilidade de ver as notícias por categorias;
Utilização de cache para acesso offline;
Criando nossa PWA com React
create-react-app ultimas-noticias
npm install -g create-react-app
Estrutura de pastas
Ao executar o comando são gerados os
arquivos necessários para executar
um app React;
O service worker é gerado através do
arquivo registerServiceWorker.js,
porém só funciona em produção;
Editando o manifest.json
Onde são definidas as
características de aparência
do app;
O arquivo de manifest é
carregado no index.html na
pasta public;
Executando
npm start
Primeiras alterações
Editado o arquivo
public/index.html;
Adicionadas as logos;
Alterado o favicon;
Editado o arquivo
App.js;
Executando
npm start
Definição dos Componentes
Topo.jsx
Menu.jsx
Noticias.jsx
Criação dos componentes
React Route npm install react-router-dom
Componente Topo
Chamada do Componente Topo
Executando
npm start
Componente Menu
Chamando o componente Menu
Executando
npm start
Axios
npm install axios
Axios é um cliente HTTP utilizado para fazer a
conexão com APIs;
Componente Noticias
Componente Noticias
Chamando o componente Noticias
Executando
Salvando os dados no Local Storage (Cache)
Gerando a Build
npm run build
npm i serve -g
serve -s build
Lighthouse
Quer saber mais sobre PWA?
Livro: "Progressive Web Apps, construa aplicações
progressivas com React" do Guilherme Pontes
Podcast: PodProgramar #31 (Spotify)
Onde encontrar o código?
https://github.com/jessizanelato/ultimas-noticias
Onde me encontrar?
Twitter: @jessizanelato
E-mail: jessizanelato@gmail.com

Criando uma PWA com React para consumir uma API