SlideShare une entreprise Scribd logo
1  sur  98
Télécharger pour lire hors ligne
aplicações

webum estudo

sobre react
jcemer.com
twitter.com/jcemer
globo.com
talentos.globo.com
o que são
aplicações
o gmail é a mais
notável das
aplicações web
o facebook é a
mais usada das
aplicações web
aplicações possuem
diferentes estados
em uma única
página
a navegação pelo
conteúdo torna-se
mais fluída em uma
aplicação
uma camada entre
navegador e
servidor reduz a
carga de dados
aplicações web
criam experiências
compatíveis as das
ferramentas nativas
por menos custo 

e melhor suporte
três
aspectos
importantes
em aplicações
priorizar o conteúdo
#1 de 3
primar uma boa
experiência de
navegação
#2 de 3
atentar para a
performance
#3 de 3
0,1 segundos é
impercebível
1 segundo é aceitável
10 segundos é mais que
o suficiente para perder o
usuário
usuários esperam
que as páginas
carreguem em 

2 segundos
forrester consulting - http://bit.ly/1ttKspI
após 3 segundos
quase a metade
dos usuários irão
abandonar seu site
forrester consulting - http://bit.ly/1ttKspI
considere também a
performance percebida
http://
blog.teamtreehouse.com/
perceived-performance
...
alguns
desafios
técnicos
pra não queimar
as aplicações
o ambiente do
navegador possui
algumas limitações
alterar os elementos do
documento sem critérios
não é performático
fugir da chuva de reflows
não é tarefa fácil
os estados da aplicação
e a barra de endereço
devem ter sincronia
o botão voltar do navegador
precisa ter sentido
a lógica para controle das
interações é complexa e
precisa ser bem pensada
deixar o usuário num estado
inconsistente não é uma boa
a organização do código
precisa ser planejada e
praticada
javascript e css viram

caos fácil fácil
manter o código enxuto e
planejar seu download faz
parte da experiência
o código da sua aplicação será
baixado a cada acesso?!
instabilidades na conexão
de rede precisam ser
endereçadas
internet caiu e voltou, e agora?!
os motores de busca
devem reconhecer o
conteúdo do seu site
algumas aplicações também
precisam ser encontradas
já existem diversas
tecnologias para
auxiliar nestas
situações
um punhado de
ingredientes
modernos
#1 react
https://github.com/
facebook/react
é uma biblioteca para
fazer interfaces com o
usuário
react
são usados para formar
sistemas mais
complexos
componentes
Valor: R$50,00
Quantidade: 1
#1.1 react
estados e propriedades
existem dois tipos
de dados dinâmicos:
os do servidor e os
do usuário
dados do usuário

escolha da 

quantidade
dados do servidor

preço para diferentes

quantidades
é tudo aquilo que pode
sofrer alteração durante o
ciclo de vida da aplicação
estado
• dados recebidos do
servidor
• dados de formulário
• ações do usuário
• ...
guardam estado e
encaminham dados para 

seus descendentes
componentes react
são dados recebidos dos
ancestrais que não podem
sofrer modificação local
propriedades
Valor: R$50,00
Quantidade: 1
onChange property
quantity state
price property
descendentes

propriedades
ancestrais

estado
os componentes mais
ancestrais são mais
complexos porque
devem guardar 

estado
#1.2 react
ciclo de vida
define como a aplicação
reage a mudanças 

nos dados
ciclo de vida
código pode ser
executado antes e depois
da interface ser montada
#ComponentWillMount

#ComponentDidMount
...e quando a interface
precisar de ajustes
#ComponentWillUpdate

#ComponentDidUpdate
também é possível
decidir o que fazer com
dados recebidos
#ComponentWillReceiveProps
...e se o html do
componente realmente
precisa de ajuste
#ShouldComponentUpdate
por fim, quando o
componente deixará o
documento
#ComponentWillUnmount
o ciclo de vida é o
recurso mais
poderoso dos
componentes
#1.3 react
dom virtual
aplica apenas as mudanças
realmente necessárias no
documento e em lotes
dom virtual
#1.4 react
transitions
permite escrever
transições de css de
forma simples
transitions
o react oferece uma
solução completa
para definição de
interfaces
#2 react 

router
https://github.com/
reactjs/react-router
gerencia as rotas da
aplicação
react router
router resolve a
integração da
aplicação com o
ambiente do
navegador
/busca
/v/12
rotas

são definidas por
componentes
/busca
/v/12
/v/12/v/13
reuso

diferentes rotas podem
apontar para os mesmos
componentes
são desenhadas para
executarem com facilidade
na plataforma node.js em
servidores
react + router
Valor: R$50,00
Quantidade: 1
execução no cliente

comportamento 

é adicionado à 

interface
Valor: R$50,00
Quantidade: 1
entregar html 

é garantia de
performance e 

boa indexação 

em buscadores
#3 webpack
https://webpack.github.io
permite transformar, juntar
e compactar o código de
todos os componentes
webpack
.css {}
svg
#4 babel
https://babeljs.io
transforma código que
utiliza as novas
funcionalidades do
javascript
babel
moderno
compatível
mais expressivo
#5 eslint
http://eslint.org
padrão de escrita de
código documentado e
verificável
eslint
verificar, 

transformar e
empacotar são
palavras chaves em
código front-end
#6 jest +
enzyme
http://facebook.github.io/jest

https://github.com/airbnb/enzyme
apoiam a escrita de testes
isolados para cada
componente
jest + enzyme
cobrir a lógica dos
componentes com
testes é essencial
• store unificada
para os dados
• stream de
eventos
• escopo de css
• css inline
• ...
testemunho 

daqueles que
puseram
as mãos
na massa
código fica naturalmente
declarativo, já organizado
e reaproveitável
renan

@aitherios
react permite focar nos
estados da interface ao
invés das modificações a
serem aplicadas
rodrigo

@rodrigowillrich
as alteração na interface
ficam mais leves e
performáticas
celio

@celio_la
react router permite
definir as rotas de maneira
simples e declarativa
rodrigo

@rodrigowillrich
o react pode ser adotado
gradualmente no projeto
pablo

@machadoum
ciclo de vida dos
componentes facilita as
boas práticas de
renderização
celio

@celio_la
a comunidade é
bastante ativa
celio

@celio_la
react ajudou a construir o
globoplay e já apoia o
desenvolvimento de
outros produtos
renan

@aitherios
estas tecnologias
possibilitam focar no
conteúdo e navegação
sem preocupações
com performance
jean

@jcemer
obrigado

foi um prazer
@jcemer

Contenu connexe

Tendances

Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Criciúma Dev
 
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...E-Commerce Brasil
 
Write once, run "everywhere"
Write once, run "everywhere"Write once, run "everywhere"
Write once, run "everywhere"Stefan Horochovec
 
Guga Alves apresenta Gutenberg fase 2 e 3
Guga Alves apresenta Gutenberg fase 2 e 3Guga Alves apresenta Gutenberg fase 2 e 3
Guga Alves apresenta Gutenberg fase 2 e 3WordCamp Floripa
 
JavaCE Conference 2012: ExtJS 4 + VRaptor
JavaCE Conference 2012: ExtJS 4 + VRaptorJavaCE Conference 2012: ExtJS 4 + VRaptor
JavaCE Conference 2012: ExtJS 4 + VRaptorLoiane Groner
 
Utilizando Polymer em aplicações móveis
Utilizando Polymer em aplicações móveisUtilizando Polymer em aplicações móveis
Utilizando Polymer em aplicações móveisStefan Horochovec
 
Aplicando Testes Automatizados com Selenium e Azure DevOps - MVPConf LATAM 2019
Aplicando Testes Automatizados com Selenium e Azure DevOps - MVPConf LATAM 2019Aplicando Testes Automatizados com Selenium e Azure DevOps - MVPConf LATAM 2019
Aplicando Testes Automatizados com Selenium e Azure DevOps - MVPConf LATAM 2019Renato Groff
 
Gutenberg: O que esperar das próximas fases
Gutenberg: O que esperar das próximas fasesGutenberg: O que esperar das próximas fases
Gutenberg: O que esperar das próximas fasesGuga Alves
 
Walker Leite apresenta usando o WordPress como backend de aplicação
Walker Leite apresenta usando o WordPress como backend de aplicaçãoWalker Leite apresenta usando o WordPress como backend de aplicação
Walker Leite apresenta usando o WordPress como backend de aplicaçãoWordCamp Floripa
 
Automatizando o teste de aplicações Web com Selenium WebDriver e Azure DevOps...
Automatizando o teste de aplicações Web com Selenium WebDriver e Azure DevOps...Automatizando o teste de aplicações Web com Selenium WebDriver e Azure DevOps...
Automatizando o teste de aplicações Web com Selenium WebDriver e Azure DevOps...Renato Groff
 
Web Tools Pt B R
Web Tools Pt  B RWeb Tools Pt  B R
Web Tools Pt B Rguestb9d145
 
DOM, CSSOM e RenderThree - Introdução ao Browser Render Path
DOM, CSSOM e RenderThree - Introdução ao Browser Render PathDOM, CSSOM e RenderThree - Introdução ao Browser Render Path
DOM, CSSOM e RenderThree - Introdução ao Browser Render PathDiego Eis
 
Uaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoUaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoRogerio Fontes
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Erik Cruz
 
Você não precisa de uma sopa de letrinhas para criar web apps
Você não precisa de uma sopa de letrinhas para criar web appsVocê não precisa de uma sopa de letrinhas para criar web apps
Você não precisa de uma sopa de letrinhas para criar web appsWilliam Oliveira
 
Criar um sistema com asp net
Criar um sistema com asp netCriar um sistema com asp net
Criar um sistema com asp netAnderson Wernek
 

Tendances (20)

Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
 
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...
 
Write once, run "everywhere"
Write once, run "everywhere"Write once, run "everywhere"
Write once, run "everywhere"
 
Guga Alves apresenta Gutenberg fase 2 e 3
Guga Alves apresenta Gutenberg fase 2 e 3Guga Alves apresenta Gutenberg fase 2 e 3
Guga Alves apresenta Gutenberg fase 2 e 3
 
Testes Automatizados
Testes AutomatizadosTestes Automatizados
Testes Automatizados
 
Documentando seu CSS
Documentando seu CSSDocumentando seu CSS
Documentando seu CSS
 
JavaCE Conference 2012: ExtJS 4 + VRaptor
JavaCE Conference 2012: ExtJS 4 + VRaptorJavaCE Conference 2012: ExtJS 4 + VRaptor
JavaCE Conference 2012: ExtJS 4 + VRaptor
 
Utilizando Polymer em aplicações móveis
Utilizando Polymer em aplicações móveisUtilizando Polymer em aplicações móveis
Utilizando Polymer em aplicações móveis
 
Aplicando Testes Automatizados com Selenium e Azure DevOps - MVPConf LATAM 2019
Aplicando Testes Automatizados com Selenium e Azure DevOps - MVPConf LATAM 2019Aplicando Testes Automatizados com Selenium e Azure DevOps - MVPConf LATAM 2019
Aplicando Testes Automatizados com Selenium e Azure DevOps - MVPConf LATAM 2019
 
Gutenberg: O que esperar das próximas fases
Gutenberg: O que esperar das próximas fasesGutenberg: O que esperar das próximas fases
Gutenberg: O que esperar das próximas fases
 
Walker Leite apresenta usando o WordPress como backend de aplicação
Walker Leite apresenta usando o WordPress como backend de aplicaçãoWalker Leite apresenta usando o WordPress como backend de aplicação
Walker Leite apresenta usando o WordPress como backend de aplicação
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Automatizando o teste de aplicações Web com Selenium WebDriver e Azure DevOps...
Automatizando o teste de aplicações Web com Selenium WebDriver e Azure DevOps...Automatizando o teste de aplicações Web com Selenium WebDriver e Azure DevOps...
Automatizando o teste de aplicações Web com Selenium WebDriver e Azure DevOps...
 
Web Tools Pt B R
Web Tools Pt  B RWeb Tools Pt  B R
Web Tools Pt B R
 
DOM, CSSOM e RenderThree - Introdução ao Browser Render Path
DOM, CSSOM e RenderThree - Introdução ao Browser Render PathDOM, CSSOM e RenderThree - Introdução ao Browser Render Path
DOM, CSSOM e RenderThree - Introdução ao Browser Render Path
 
Uaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoUaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - Introdução
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021
 
Você não precisa de uma sopa de letrinhas para criar web apps
Você não precisa de uma sopa de letrinhas para criar web appsVocê não precisa de uma sopa de letrinhas para criar web apps
Você não precisa de uma sopa de letrinhas para criar web apps
 
Criar um sistema com asp net
Criar um sistema com asp netCriar um sistema com asp net
Criar um sistema com asp net
 

Similaire à Aplicações Web - um estudo sobre React

Arquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieArquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieVivaldo Jose Breternitz
 
Mini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLMini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLtarginosilveira
 
AAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambAAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambMicrosoft Brasil
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sitesthiagolima
 
Lightning components - o que são, quais os seus objectivos e exemplos práticos
Lightning components - o que são, quais os seus objectivos e exemplos práticosLightning components - o que são, quais os seus objectivos e exemplos práticos
Lightning components - o que são, quais os seus objectivos e exemplos práticosDom Digital
 
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...tdc-globalcode
 
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...Marcelo Palladino
 
Introdução a Arquitetura de Sistemas
Introdução a Arquitetura de SistemasIntrodução a Arquitetura de Sistemas
Introdução a Arquitetura de SistemasIgor Takenami
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev IntroduçãoMarcio Marinho
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRodrigo Recio
 
201406Carvalho
201406Carvalho201406Carvalho
201406CarvalhoAfonso Pra
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma AndroidÉdipo Souza
 

Similaire à Aplicações Web - um estudo sobre React (20)

Arquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieArquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/Mackenzie
 
Mini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLMini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOL
 
AAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambAAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcamb
 
JavaEE
JavaEEJavaEE
JavaEE
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
 
Lightning components - o que são, quais os seus objectivos e exemplos práticos
Lightning components - o que são, quais os seus objectivos e exemplos práticosLightning components - o que são, quais os seus objectivos e exemplos práticos
Lightning components - o que são, quais os seus objectivos e exemplos práticos
 
1409243945064
14092439450641409243945064
1409243945064
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
 
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
 
Hello ReactJs
Hello ReactJsHello ReactJs
Hello ReactJs
 
Introdução a Arquitetura de Sistemas
Introdução a Arquitetura de SistemasIntrodução a Arquitetura de Sistemas
Introdução a Arquitetura de Sistemas
 
PHP 10 CodeIgniter
PHP 10 CodeIgniterPHP 10 CodeIgniter
PHP 10 CodeIgniter
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
Asa cpbr4
Asa cpbr4Asa cpbr4
Asa cpbr4
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
 
201406Carvalho
201406Carvalho201406Carvalho
201406Carvalho
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma Android
 
Web Sphere
Web SphereWeb Sphere
Web Sphere
 
Front end architecture
Front end architectureFront end architecture
Front end architecture
 

Aplicações Web - um estudo sobre React