Um momento
Aula 05
Cursos / React - Code Splitting para Iniciantes (Divisão de Código, Lazy Loading)
Criando um Botão e Painel para Explicar Como Fazer Code Splitting em React

Summary

Resumo da Prática de Code Splitting

Após configurar o Webpack do Observer para não operar em modo silencioso e desabilitar as otimizações do Webpack, inicia-se a prática de code splitting com um exemplo prático.

Estrutura do Projeto

  1. Caminho Inicial: A prática começa na pasta src do projeto, onde app.js é o ponto de partida.
  2. Visualização do Bundle: O bundle pode ser visualizado na aba Network do navegador, onde observa-se que o tamanho não deve exceder alguns megabytes devido à inclusão do React e ao modo de desenvolvimento ativo.

Modificações no app.js

  1. Limpeza do Código: O autor removeu partes desnecessárias do app.js, mantendo apenas uma div com o nome "app".
  2. Criação de Componente: Um novo componente chamado painel.js é criado, que renderiza uma div com conteúdo.
  3. Estilização Rápida: O estilo é aplicado diretamente através de um objeto de estilo, método que não é recomendado, mas utilizado para facilitar a visualização.

Implementação de Funcionalidades

  1. Exibição Condicional do Painel: O painel é configurado para ser invisível inicialmente. O componente recebe um estado chamado painelAberto, que é controlado por um botão "Abrir painel".
  2. Gerenciamento de Estado: Ao clicar no botão, o estado do painel é alternado entre true e false, controlando a visibilidade do painel.
  3. Binding de Métodos: O método de clique é vinculado ao contexto apropriado para evitar problemas de this indefinido.

Discussão sobre Code Splitting

  • O autor menciona a intenção de não incluir o painel no bundle inicial, pois a sua visibilidade pode não ser necessária em um primeiro acesso ao aplicativo. A ideia é que o painel só seja carregado quando o usuário atinge um determinado ponto no uso do aplicativo.

Conclusão

Ao final da prática, a discussão gira em torno da necessidade de otimização do bundle, especialmente ao lidar com componentes que não são obrigatórios para o carregamento inicial do aplicativo, propondo assim a técnica de code splitting como solução.

Video Transcript

Depois de configurar o Webpack da Observer para não ficar em modo quieto e o Webpack para não fazer optimização, vamos iniciar a nossa prática de code splitter aqui. Vamos ver, vamos para a pasta src do projeto. Web.jps é o ponto de partida, tá? Esse aqui é aquela página que aparece. Deixa eu mostrar aqui. Então aquela página ali, sr.jps. A gente recebeu o bundle aqui na aba Network do navegador para js, tá? Então o bundle não pode ser seteir em megabytes, porque está incluindo o react, tem modo de desenvolvimento. Ah, vamos ver aqui. Então vamos para esse app js e remover todas as coisas que a gente não se importa muito com esses caras. Então remove tudo aqui do... remove só ponho a div aqui com o nome app. Não precisa ser ss, não precisa ser vg. Salvar, ele vai automaticamente atualizar a Apple. A gente não quer saber muito disso. Então tem o app lá, vamos criar um componente aqui. Por exemplo, painel.js. Vamos importe react, from react, fazer esse componente aqui. Class painel extends react.component render return. Vamos botar uma div painel aqui. Dao export default. Vamos botar outro div só para botar um conteúdo. Alguma coisa assim. Lá do app, eu ponho app num adiv e ponho import painel e ponho painel aqui. Vamos supor import painel from.bar painel. Tá, certo? Deixa eu botar um estilo aqui para painel. Eu vou usar style, mas não é recomendado. Dá só para poder fazer o estilo rápido. Vamos ver. Background color. Aqui sem objeto, sim, carno case. Vou botar 4, 4, 0, 0, 0. E vou botar color branco. F, F, F, F, F. Então temos aqui num app.js. Vamos supor que você tenha um aplicativo e você põe esse componente painel. Dessa maneira aqui, o app pack vai pegar importar painel, vai incluir no bundle.js. Mas como que a gente faz para fazer code splitting? Talvez esse painel estivesse, por exemplo, invisível inicialmente. Por exemplo assim. Dá o constructor aqui, props, super props. Vou definir o estado inicial. Vou dizer painel aberto, false, tá? Aí só vai mostrar painel, see this.state, painel aberto. Vou ver a verdadeiro. Ele mostra painel, sim, não, não vai. Vou botar um botão aqui, button, type button. Abrir painel, tá? Para abrir painel, quando você dá um click, um click, vou fazer a função no this, um click. Um click, defini aqui. Vou dar o set state para abrir painel. Painel aberto, vou botar só o toggle, tá? Vou desse.state.painel aberto e vou botar o oposto, tá? Então deixa eu parar aqui, que eu fiz muito rápido. Então o que é que eu fiz aqui? Então eu quero que o painel seja invisível inicialmente. Para poder controlar se painel aparece ou não, eu defini essa variável no estado chamado painel aberto, que inicialmente tem valor false aqui no constructor. Defini o estado inicial. Agora eu tenho que fechar esse botão, que eu esqueci. Eu tenho um botão que se você clicar, vai chamar a função desse onclick, que eu defini no próprio, como método do componente. Essa função, quando clicar, vai dar o set state, setar o painel aberto para o valor oposto do que era antes. Nesse caso, de false vira true, se fosse true virava false. E com isso ele vai abrir o painel quando eu clicar, tá? Ah, esqueci de dar o binding. O des está indefinido, porque... Ou você pode dar o binding aqui no constructor, ou pode usar o property initialize, tanto faz. Vou dar o binding no constructor, des, onclick, é igual a des, ponto onclick, ponto bind des, para setar o contexto do des para ser o próprio app, em vez do botão. Tá, então, quando eu clicar aqui, abrir, abre ou não? Tá? Agora, vamos supor que a gente não queira iniciar esse painel, inicialmente, talvez o painel... Esse painel aqui, vamos supor que esteja no... Não esteja no início do funil, se lembra daquele exemplo do funil, quando o usuário acessa o aplicativo pela primeira vez, ele não vai precisar ver esse painel na mesma hora, tá? Quando ele inicia no primeiro carregamento. Talvez ele tenha que fazer muitas, muitas coisas e navegar no aplicativo, até chegar um ponto que você já dá para abrir aquele painel. Então, inicialmente, vamos supor que você não precisa ter esse painel. Agora, o problema aqui é que o painel está sendo incluído, esse código do painel, embora que não seja muita coisa aqui, poderia ser um código gigante, tá? Ele está sendo incluído no nosso bundle, ponto j, está esse aqui, esse cara aqui, tá? Deixa eu dar... Deixa eu deslabitar o cache aqui, eu vou deslabitar o cache só para ele não pegar o cache. Tá bom? Então, tem um bundle js aqui...
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: