Aplicações Web - um estudo sobre React

Jean Carlo Emer
Jean Carlo EmerSenior Developer at Work & Co
aplicações

webum estudo

sobre react
jcemer.com
twitter.com/jcemer
globo.com
talentos.globo.com
Aplicações Web - um estudo sobre React
Aplicações Web - um estudo sobre React
Aplicações Web - um estudo sobre React
Aplicações Web - um estudo sobre React
o que são
aplicações
Aplicações Web - um estudo sobre React
o gmail é a mais
notável das
aplicações web
Aplicações Web - um estudo sobre React
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
Aplicações Web - um estudo sobre React
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
1 of 98

Recommended

Cache em aplicações web by
Cache em aplicações webCache em aplicações web
Cache em aplicações webJean Carlo Emer
1.1K views111 slides
Como encarar o desenvolvimento front-end by
Como encarar o desenvolvimento front-endComo encarar o desenvolvimento front-end
Como encarar o desenvolvimento front-endJean Carlo Emer
2.7K views71 slides
Lapidando o Globo Play by
Lapidando o Globo PlayLapidando o Globo Play
Lapidando o Globo PlayJean Carlo Emer
2.7K views93 slides
Blazor #SnetTalks3 by
Blazor  #SnetTalks3Blazor  #SnetTalks3
Blazor #SnetTalks3André Agostinho
47 views13 slides
A Evolução do Front end by
A Evolução do Front endA Evolução do Front end
A Evolução do Front endDouglas Matoso
439 views35 slides
Componentizando a Web com Polymer by
Componentizando a Web com PolymerComponentizando a Web com Polymer
Componentizando a Web com PolymerStefan Horochovec
2.3K views49 slides

More Related Content

What's hot

Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen... by
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
305 views31 slides
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -... by
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
724 views43 slides
Write once, run "everywhere" by
Write once, run "everywhere"Write once, run "everywhere"
Write once, run "everywhere"Stefan Horochovec
1.6K views38 slides
Guga Alves apresenta Gutenberg fase 2 e 3 by
Guga Alves apresenta Gutenberg fase 2 e 3Guga Alves apresenta Gutenberg fase 2 e 3
Guga Alves apresenta Gutenberg fase 2 e 3WordCamp Floripa
56 views31 slides
Testes Automatizados by
Testes AutomatizadosTestes Automatizados
Testes AutomatizadosRodrigo Branas
6.8K views30 slides
Documentando seu CSS by
Documentando seu CSSDocumentando seu CSS
Documentando seu CSSGuilherme Moura
904 views44 slides

What's hot(20)

Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen... by Criciúma Dev
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 Dev305 views
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -... by E-Commerce Brasil
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 Brasil724 views
Guga Alves apresenta Gutenberg fase 2 e 3 by WordCamp Floripa
Guga Alves apresenta Gutenberg fase 2 e 3Guga Alves apresenta Gutenberg fase 2 e 3
Guga Alves apresenta Gutenberg fase 2 e 3
WordCamp Floripa56 views
JavaCE Conference 2012: ExtJS 4 + VRaptor by Loiane Groner
JavaCE Conference 2012: ExtJS 4 + VRaptorJavaCE Conference 2012: ExtJS 4 + VRaptor
JavaCE Conference 2012: ExtJS 4 + VRaptor
Loiane Groner763 views
Utilizando Polymer em aplicações móveis by Stefan Horochovec
Utilizando Polymer em aplicações móveisUtilizando Polymer em aplicações móveis
Utilizando Polymer em aplicações móveis
Stefan Horochovec345 views
Aplicando Testes Automatizados com Selenium e Azure DevOps - MVPConf LATAM 2019 by Renato Groff
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
Renato Groff1.8K views
Gutenberg: O que esperar das próximas fases by Guga Alves
Gutenberg: O que esperar das próximas fasesGutenberg: O que esperar das próximas fases
Gutenberg: O que esperar das próximas fases
Guga Alves219 views
Walker Leite apresenta usando o WordPress como backend de aplicação by WordCamp Floripa
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
WordCamp Floripa71 views
Automatizando o teste de aplicações Web com Selenium WebDriver e Azure DevOps... by Renato Groff
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 Groff784 views
Web Tools Pt B R by guestb9d145
Web Tools Pt  B RWeb Tools Pt  B R
Web Tools Pt B R
guestb9d145354 views
DOM, CSSOM e RenderThree - Introdução ao Browser Render Path by Diego Eis
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
Diego Eis3.3K views
Uaijug ADF - spring boot - microservice - Introdução by Rogerio Fontes
Uaijug ADF - spring boot - microservice - IntroduçãoUaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - Introdução
Rogerio Fontes336 views
Usando Git na Unity - Gaming For All 2021 by Erik Cruz
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021
Erik Cruz114 views
Você não precisa de uma sopa de letrinhas para criar web apps by William Oliveira
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
William Oliveira637 views

Similar to Aplicações Web - um estudo sobre React

Arquitetura Web Desacoplada - FCI/Mackenzie by
Arquitetura Web Desacoplada - FCI/MackenzieArquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieVivaldo Jose Breternitz
742 views44 slides
Mini-curso RubyOnRails CESOL by
Mini-curso RubyOnRails CESOLMini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLtarginosilveira
482 views27 slides
AAB301 - Rich Internet Application - wcamb by
AAB301 - Rich Internet Application - wcambAAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambMicrosoft Brasil
712 views31 slides
JavaEE by
JavaEEJavaEE
JavaEEElenilson Vieira
587 views46 slides
Apresentação Minas - Desenvolvendo Sites by
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sitesthiagolima
1.2K views49 slides
Lightning components - o que são, quais os seus objectivos e exemplos práticos by
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
3K views28 slides

Similar to Aplicações Web - um estudo sobre React(20)

AAB301 - Rich Internet Application - wcamb by Microsoft Brasil
AAB301 - Rich Internet Application - wcambAAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcamb
Microsoft Brasil712 views
Apresentação Minas - Desenvolvendo Sites by thiagolima
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
thiagolima1.2K views
Lightning components - o que são, quais os seus objectivos e exemplos práticos by Dom Digital
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
Dom Digital3K views
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C... by Marcelo Palladino
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...
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce... by tdc-globalcode
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-globalcode487 views
Introdução a Arquitetura de Sistemas by Igor Takenami
Introdução a Arquitetura de SistemasIntrodução a Arquitetura de Sistemas
Introdução a Arquitetura de Sistemas
Igor Takenami7.8K views
Java Web Dev Introdução by Marcio Marinho
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
Marcio Marinho2.4K views
Ruby on Rails: um estudo de viabilidade em ambientes empresariais by Rodrigo Recio
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
Rodrigo Recio1.7K views
201406Carvalho by Afonso Pra
201406Carvalho201406Carvalho
201406Carvalho
Afonso Pra219 views
Introdução a Plataforma Android by Édipo Souza
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma Android
Édipo Souza722 views

Recently uploaded

VIRTUS 1.6 MSI.pdf by
VIRTUS 1.6 MSI.pdfVIRTUS 1.6 MSI.pdf
VIRTUS 1.6 MSI.pdfFbioVieira85
5 views13 slides
MAPA - CONTABILIDADE EMPRESARIAL - 54/2023 by
MAPA - CONTABILIDADE EMPRESARIAL - 54/2023MAPA - CONTABILIDADE EMPRESARIAL - 54/2023
MAPA - CONTABILIDADE EMPRESARIAL - 54/2023AcademiaDL
89 views4 slides
DevFest2023-Pragmatismo da Internet das Coisas by
DevFest2023-Pragmatismo da Internet das CoisasDevFest2023-Pragmatismo da Internet das Coisas
DevFest2023-Pragmatismo da Internet das CoisasWalter Coan
24 views40 slides
Skills e Squads, como trabalhar? by
Skills e Squads, como trabalhar?Skills e Squads, como trabalhar?
Skills e Squads, como trabalhar?Annelise Gripp
32 views13 slides
ProxySQL no MySQL: Apenas um load balancer? by
ProxySQL no MySQL: Apenas um load balancer?ProxySQL no MySQL: Apenas um load balancer?
ProxySQL no MySQL: Apenas um load balancer?Roberto Garcia de Bem
6 views62 slides
Shift left DevOps Experience by
Shift left DevOps ExperienceShift left DevOps Experience
Shift left DevOps ExperienceWalter Coan
5 views19 slides

Recently uploaded(10)

MAPA - CONTABILIDADE EMPRESARIAL - 54/2023 by AcademiaDL
MAPA - CONTABILIDADE EMPRESARIAL - 54/2023MAPA - CONTABILIDADE EMPRESARIAL - 54/2023
MAPA - CONTABILIDADE EMPRESARIAL - 54/2023
AcademiaDL89 views
DevFest2023-Pragmatismo da Internet das Coisas by Walter Coan
DevFest2023-Pragmatismo da Internet das CoisasDevFest2023-Pragmatismo da Internet das Coisas
DevFest2023-Pragmatismo da Internet das Coisas
Walter Coan24 views
Skills e Squads, como trabalhar? by Annelise Gripp
Skills e Squads, como trabalhar?Skills e Squads, como trabalhar?
Skills e Squads, como trabalhar?
Annelise Gripp32 views
Shift left DevOps Experience by Walter Coan
Shift left DevOps ExperienceShift left DevOps Experience
Shift left DevOps Experience
Walter Coan5 views
TechConnection 2023 Floripa Azure Container Apps by Walter Coan
TechConnection 2023 Floripa Azure Container AppsTechConnection 2023 Floripa Azure Container Apps
TechConnection 2023 Floripa Azure Container Apps
Walter Coan5 views
Conheça agora o UiPath Autopilot™ para o Studio.pdf by BrunaCavalcanti29
Conheça agora o UiPath Autopilot™ para o Studio.pdfConheça agora o UiPath Autopilot™ para o Studio.pdf
Conheça agora o UiPath Autopilot™ para o Studio.pdf

Aplicações Web - um estudo sobre React