SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
REACT

NOS

TRILHOS
Como implementamos

o React em nosso projeto Rails
Graduado em Adm. Empresas, pós-graduado em
Análise, Projeto e Gerência de Sistemas.
John W. M. Carneiro
Dev. Full-Stack na Checkplant Sistemas S/A
- Ruby (Rails)
- Python (Django/Flask)
- PHP
Linguagens:
- JS
- React
- Vue e etc.
@johnwmcarneiro
SUPER
MOTIVAÇÃO
- Monólito.
- Frontend em Rails (erb, jquery e etc), Angular.js e Sprockets.
- Dificuldade de manutenção para o Dev.
- Divisão de responsabilidade.
- Hype da atualização do Rails.
- Novo Design System e uma nova funcionalidade.
Motivação
WHY
REACT?
Why React?
- Equipe.
- Mercado.
- Outros projetos internos já desenvolvidos com React e
React Native.
- React Hooks (State, Effect, Memo, Context e etc) e
sem classes.
SEM
HOOKS
REACT?
WHY
COM
HOOKS
REACT?
WHY
EAGORA?
Reuniões e Regras
Reuniões e Regras
- Reunião para apresentar a ideia.
- Reunião entre com os times de tecnologia.
- Deveria ter separação do código. Sem uso de gems que
gerem dependência;
- Comunicação deveria ser via API;
- Inclusão do JS e CSS no layout do projeto, múltiplos
entrypoints e múltiplos apps.
- Integração com CI e deploy junto do Rails.
Definição
- Ficar acoplado como a implementação do Angular.js.
Preocupação
POR ONDE
COMEÇAMOS?
Check…
- Tela simples um crud;
- Queríamos testar a inclusão do React e entender
como seria com o Semaphore e Rails.
MVP
FIRST
VERSION
Rails controlando
todas as rotas.
Adicionar no
pipeline de deploy
junto do app Rails.
FIRST VERSION
MVP
Helper para incluir
JS e CSS de acordo
com o ambiente.
FIRST VERSION
MVP
Múltiplos
entrypoints.
Tratar cada página
como um “app”.
FIRST VERSION
MVP
Não usamos o CRA.
Webpack
customizado.
FIRST VERSION
MVP
MVP First Version
- E quando vamos de uma página de listagem para uma
página de cadastro ou outra?
- E quando vários pontos precisam dos mesmos dados?
- Override de CSS.
Problemas:
VERSÃO
ATUAL
Único entrypoint.
ATUAL
VERSÃO
Destinamos no Rails
uma rota exclusiva
para o frontend em
React.
ATUAL
VERSÃO
React Router
controlando a partir
da rota Rails.
ATUAL
VERSÃO
Página inteira
deve ser em react.
ATUAL
VERSÃO
GANHOS
COM ESSA
ABORDAGEM
O que ganhamos…
- Evolução gradual do frontend, implementação do
React sem refazer todo o frontend;
- Aplicação do novo Design System;
- Melhora na experiência do usuário:

- Desempenho no carregamento da tela;

- Elementos já carregados;

- Resposta por api e cache;

- Assíncrono.
- Backend:

- Simplificação;

- API interna com cache;

- Serialização;

- Testes e documentação.
- Motivação da equipe.
APRENDIZADO
Aprendizado
- Inclua toda equipe no processo e principalmente quem lida
com o cliente (CS, Suporte,...).
- Planeje antes!

- Ao criar um nova tela, relacione tudo que se espera.

- Ao refazer uma tela, relacione todas as regras existentes e
esperadas.

- Verifique antes outras páginas que utilizam as mesmas
funcionalidades.
- Não exclua o código antigo, deixe para o final.
- Comece arrumando a casa e construa os componentes.
- Usou pela segunda vez, faça um componente.
- Instale o Lint e siga as regras.
- Principalmente, pense fora da caixa e não se apegue que
deve ser do jeito “certo".
- Feito é melhor que perfeito.
PRÓXIMOS
DESAFIOS
Próximos desafios
- Integrar as funcionalidades em React com as
funcionalidades antigas em Angular.js;
- Continuar evoluindo o código e migrar outras telas,
- Manter a organização e qualidade de código;
- I18n;
- Isolamento da CSS.
OBRIGADO

Mais conteúdo relacionado

Mais procurados

JSF 2 e Primefaces - 4º Encontro Mensal do Gojava
JSF 2 e Primefaces - 4º Encontro Mensal do GojavaJSF 2 e Primefaces - 4º Encontro Mensal do Gojava
JSF 2 e Primefaces - 4º Encontro Mensal do GojavaFrederico Maia Arantes
 
Automatizando tudo no mundo mobile com fastlane
Automatizando tudo no mundo mobile com fastlaneAutomatizando tudo no mundo mobile com fastlane
Automatizando tudo no mundo mobile com fastlaneakamud
 
MSP Tech Days Online 2018 - SPA além do JavaScript com Blazor
MSP Tech Days Online 2018 - SPA além do JavaScript com BlazorMSP Tech Days Online 2018 - SPA além do JavaScript com Blazor
MSP Tech Days Online 2018 - SPA além do JavaScript com BlazorGustavo Bellini Bigardi
 
Desafios de um desenvolvedor JSF
Desafios de um desenvolvedor JSFDesafios de um desenvolvedor JSF
Desafios de um desenvolvedor JSFRafael Ponte
 
Symfony - PHP pra gente grande
Symfony - PHP pra gente grandeSymfony - PHP pra gente grande
Symfony - PHP pra gente grandeLuã de Souza
 
AMP - Accelerated Mobile Pages Project
AMP - Accelerated Mobile Pages ProjectAMP - Accelerated Mobile Pages Project
AMP - Accelerated Mobile Pages ProjectJuliano Theiss
 
JSP - Java Serves Pages
JSP - Java Serves PagesJSP - Java Serves Pages
JSP - Java Serves PagesAmanda Luz
 
Criando aplicações java fx em minutos
Criando aplicações java fx em minutosCriando aplicações java fx em minutos
Criando aplicações java fx em minutosBruno Oliveira
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebElenilson Vieira
 
Introdução ao java fx e visage
Introdução ao java fx e visageIntrodução ao java fx e visage
Introdução ao java fx e visagejesuinoPower
 
Performance em-front-end-luiz-tanure
Performance em-front-end-luiz-tanurePerformance em-front-end-luiz-tanure
Performance em-front-end-luiz-tanureLuiz Tanure
 
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAVRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAYelken Heckman Ferreira Gonzales
 

Mais procurados (20)

JSF 2 e Primefaces - 4º Encontro Mensal do Gojava
JSF 2 e Primefaces - 4º Encontro Mensal do GojavaJSF 2 e Primefaces - 4º Encontro Mensal do Gojava
JSF 2 e Primefaces - 4º Encontro Mensal do Gojava
 
Automatizando tudo no mundo mobile com fastlane
Automatizando tudo no mundo mobile com fastlaneAutomatizando tudo no mundo mobile com fastlane
Automatizando tudo no mundo mobile com fastlane
 
MSP Tech Days Online 2018 - SPA além do JavaScript com Blazor
MSP Tech Days Online 2018 - SPA além do JavaScript com BlazorMSP Tech Days Online 2018 - SPA além do JavaScript com Blazor
MSP Tech Days Online 2018 - SPA além do JavaScript com Blazor
 
Desafios de um desenvolvedor JSF
Desafios de um desenvolvedor JSFDesafios de um desenvolvedor JSF
Desafios de um desenvolvedor JSF
 
Cake PHP
Cake PHPCake PHP
Cake PHP
 
Symfony - PHP pra gente grande
Symfony - PHP pra gente grandeSymfony - PHP pra gente grande
Symfony - PHP pra gente grande
 
AMP - Accelerated Mobile Pages Project
AMP - Accelerated Mobile Pages ProjectAMP - Accelerated Mobile Pages Project
AMP - Accelerated Mobile Pages Project
 
JSP - Java Serves Pages
JSP - Java Serves PagesJSP - Java Serves Pages
JSP - Java Serves Pages
 
Criando aplicações java fx em minutos
Criando aplicações java fx em minutosCriando aplicações java fx em minutos
Criando aplicações java fx em minutos
 
Watir
WatirWatir
Watir
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
 
Boas práticas Magento 2
Boas práticas Magento 2Boas práticas Magento 2
Boas práticas Magento 2
 
Introdução ao java fx e visage
Introdução ao java fx e visageIntrodução ao java fx e visage
Introdução ao java fx e visage
 
Java Web Fácil com VRaptor
Java Web Fácil com VRaptorJava Web Fácil com VRaptor
Java Web Fácil com VRaptor
 
Performance em-front-end-luiz-tanure
Performance em-front-end-luiz-tanurePerformance em-front-end-luiz-tanure
Performance em-front-end-luiz-tanure
 
Sessao2
Sessao2Sessao2
Sessao2
 
Sessao2 ASP
Sessao2 ASPSessao2 ASP
Sessao2 ASP
 
Java Web Start
Java Web StartJava Web Start
Java Web Start
 
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAVRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
 
JavaFX 2
JavaFX 2JavaFX 2
JavaFX 2
 

Semelhante a React nos Trilhos

TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JSRodrigo Urubatan
 
TDC São Paulo 2015 - Interfaces Ricas com Rails e React.JS
TDC São Paulo 2015  - Interfaces Ricas com Rails e React.JSTDC São Paulo 2015  - Interfaces Ricas com Rails e React.JS
TDC São Paulo 2015 - Interfaces Ricas com Rails e React.JSRodrigo Urubatan
 
RubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosRubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosFelipe Gadelha Ruoso
 
Desenvolvimento Ria com Java
Desenvolvimento Ria com JavaDesenvolvimento Ria com Java
Desenvolvimento Ria com JavaTI Infnet
 
Matando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaMatando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaJosé Roberto Araújo
 
Desenvolvimento RIA com Java
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
Desenvolvimento RIA com Javaarmeniocardoso
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoÉberli Cabistani Riella
 
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
 
435142330-Guia-Completo-React-Js.pdf
435142330-Guia-Completo-React-Js.pdf435142330-Guia-Completo-React-Js.pdf
435142330-Guia-Completo-React-Js.pdfJulia469065
 
Navegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaNavegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaAndrei Tognolo
 
Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-ptPedro Sousa
 
Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Douglas Roeder
 
Rails - Wep-App-Theme no Liberdade Interativa Guarapari
Rails - Wep-App-Theme no Liberdade Interativa GuarapariRails - Wep-App-Theme no Liberdade Interativa Guarapari
Rails - Wep-App-Theme no Liberdade Interativa GuarapariAllan Freitas
 
React native - testável e organizado
React native - testável e organizadoReact native - testável e organizado
React native - testável e organizadoAndré Antunes Vieira
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformAndré Paulovich
 
Minicurso Ruby on Rails - Wake Up Systems
Minicurso Ruby on Rails - Wake Up SystemsMinicurso Ruby on Rails - Wake Up Systems
Minicurso Ruby on Rails - Wake Up SystemsWakeUpSystems
 

Semelhante a React nos Trilhos (20)

TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
 
Conhecendo o Ruby on Rails
Conhecendo o Ruby on RailsConhecendo o Ruby on Rails
Conhecendo o Ruby on Rails
 
TDC São Paulo 2015 - Interfaces Ricas com Rails e React.JS
TDC São Paulo 2015  - Interfaces Ricas com Rails e React.JSTDC São Paulo 2015  - Interfaces Ricas com Rails e React.JS
TDC São Paulo 2015 - Interfaces Ricas com Rails e React.JS
 
RubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosRubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhos
 
Desenvolvimento Ria com Java
Desenvolvimento Ria com JavaDesenvolvimento Ria com Java
Desenvolvimento Ria com Java
 
Matando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaMatando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejista
 
Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
 
Desenvolvimento RIA com Java
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
Desenvolvimento RIA com Java
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
 
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
 
XPT Framework
XPT FrameworkXPT Framework
XPT Framework
 
435142330-Guia-Completo-React-Js.pdf
435142330-Guia-Completo-React-Js.pdf435142330-Guia-Completo-React-Js.pdf
435142330-Guia-Completo-React-Js.pdf
 
Navegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaNavegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo java
 
Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-pt
 
1409243945064
14092439450641409243945064
1409243945064
 
Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01
 
Rails - Wep-App-Theme no Liberdade Interativa Guarapari
Rails - Wep-App-Theme no Liberdade Interativa GuarapariRails - Wep-App-Theme no Liberdade Interativa Guarapari
Rails - Wep-App-Theme no Liberdade Interativa Guarapari
 
React native - testável e organizado
React native - testável e organizadoReact native - testável e organizado
React native - testável e organizado
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud Platform
 
Minicurso Ruby on Rails - Wake Up Systems
Minicurso Ruby on Rails - Wake Up SystemsMinicurso Ruby on Rails - Wake Up Systems
Minicurso Ruby on Rails - Wake Up Systems
 

React nos Trilhos

  • 2. Graduado em Adm. Empresas, pós-graduado em Análise, Projeto e Gerência de Sistemas. John W. M. Carneiro Dev. Full-Stack na Checkplant Sistemas S/A - Ruby (Rails) - Python (Django/Flask) - PHP Linguagens: - JS - React - Vue e etc. @johnwmcarneiro
  • 4. - Monólito. - Frontend em Rails (erb, jquery e etc), Angular.js e Sprockets. - Dificuldade de manutenção para o Dev. - Divisão de responsabilidade. - Hype da atualização do Rails. - Novo Design System e uma nova funcionalidade. Motivação
  • 6. Why React? - Equipe. - Mercado. - Outros projetos internos já desenvolvidos com React e React Native. - React Hooks (State, Effect, Memo, Context e etc) e sem classes.
  • 10. Reuniões e Regras - Reunião para apresentar a ideia. - Reunião entre com os times de tecnologia. - Deveria ter separação do código. Sem uso de gems que gerem dependência; - Comunicação deveria ser via API; - Inclusão do JS e CSS no layout do projeto, múltiplos entrypoints e múltiplos apps. - Integração com CI e deploy junto do Rails. Definição - Ficar acoplado como a implementação do Angular.js. Preocupação
  • 12. Check… - Tela simples um crud; - Queríamos testar a inclusão do React e entender como seria com o Semaphore e Rails.
  • 14. Rails controlando todas as rotas. Adicionar no pipeline de deploy junto do app Rails. FIRST VERSION MVP
  • 15. Helper para incluir JS e CSS de acordo com o ambiente. FIRST VERSION MVP
  • 16. Múltiplos entrypoints. Tratar cada página como um “app”. FIRST VERSION MVP
  • 17. Não usamos o CRA. Webpack customizado. FIRST VERSION MVP
  • 18. MVP First Version - E quando vamos de uma página de listagem para uma página de cadastro ou outra? - E quando vários pontos precisam dos mesmos dados? - Override de CSS. Problemas:
  • 21. Destinamos no Rails uma rota exclusiva para o frontend em React. ATUAL VERSÃO
  • 22. React Router controlando a partir da rota Rails. ATUAL VERSÃO
  • 23. Página inteira deve ser em react. ATUAL VERSÃO
  • 25. O que ganhamos… - Evolução gradual do frontend, implementação do React sem refazer todo o frontend; - Aplicação do novo Design System; - Melhora na experiência do usuário:
 - Desempenho no carregamento da tela;
 - Elementos já carregados;
 - Resposta por api e cache;
 - Assíncrono. - Backend:
 - Simplificação;
 - API interna com cache;
 - Serialização;
 - Testes e documentação. - Motivação da equipe.
  • 27. Aprendizado - Inclua toda equipe no processo e principalmente quem lida com o cliente (CS, Suporte,...). - Planeje antes!
 - Ao criar um nova tela, relacione tudo que se espera.
 - Ao refazer uma tela, relacione todas as regras existentes e esperadas.
 - Verifique antes outras páginas que utilizam as mesmas funcionalidades. - Não exclua o código antigo, deixe para o final. - Comece arrumando a casa e construa os componentes. - Usou pela segunda vez, faça um componente. - Instale o Lint e siga as regras. - Principalmente, pense fora da caixa e não se apegue que deve ser do jeito “certo". - Feito é melhor que perfeito.
  • 29. Próximos desafios - Integrar as funcionalidades em React com as funcionalidades antigas em Angular.js; - Continuar evoluindo o código e migrar outras telas, - Manter a organização e qualidade de código; - I18n; - Isolamento da CSS.
  • 30.