JavaScript, embora escrito para ser uma linguagem simples, pode produzir bases de código surpreendentemente complexas. Parte do motivo é que há uma grande variedade de classes e módulos disponíveis. A maioria dos programas e estruturas JavaScript substanciais têm muitas dependências, o que pode fazer um projeto aparentemente simples acumular uma grande quantidade de código rapidamente.

Quanto mais código um projeto tiver, mais lento será o carregamento do navegador. Portanto, geralmente você precisa equilibrar o tamanho de suas dependências com o desempenho que espera de seu JavaScript. A divisão de código é uma maneira útil de encontrar esse equilíbrio.

O que é divisão de código?

Muitos frameworks JavaScript agrupam todas as dependências em um grande arquivo. Isso torna mais fácil adicionar seu JavaScript a uma página HTML. O pacote requer apenas uma tag de link e há menos chamadas necessárias para configurar a página, pois todo o JavaScript está em um só lugar. Em teoria, agrupar o JavaScript dessa maneira deve acelerar o carregamento da página e reduzir a quantidade de tráfego que a página precisa gerenciar.

Em um determinado ponto, no entanto, um pacote cresce até um certo tamanho no qual a sobrecarga de interpretação e execução do código retarda o carregamento da página em vez de acelerá-lo. Esse ponto de inflexão é diferente para cada página, e você deve testar suas páginas para descobrir onde está. Não há uma orientação geral-tudo depende das dependências que estão sendo carregadas.

A chave para a divisão de código é descobrir quais partes de uma página precisam usar diferentes dependências de JavaScript. A divisão de código permite que você omita estrategicamente certas dependências dos pacotes e, em seguida, insira-as apenas onde forem necessárias. Isso significa que eles também não são carregados até que sejam necessários-carregar o JavaScript apenas quando necessário acelera o tempo de carregamento da página.

Isso pode parecer contra-intuitivo no início, pois a página ainda está carregando a mesma quantidade de código, mas a diferença ocorre porque a página pode não executar todo o código que carrega. Por exemplo, se um elemento dinâmico em uma página requer uma grande dependência, essa dependência pode causar um atraso de página perceptível. Se a dependência for carregada apenas quando o elemento dinâmico for usado, no entanto, a dependência pode ser pequena o suficiente onde nenhum atraso é gerado.

A divisão de código é uma prática comum em grandes aplicativos React, e o aumento na velocidade que ela fornece pode determinar se um usuário continua usando um aplicativo da web ou sai. Muitos estudos mostraram que as páginas têm menos de três segundos para impressionar os usuários, portanto, reduzir até mesmo frações de segundo pode ser significativo. Portanto, apontar para três segundos ou menos de tempo de carregamento é o ideal.

Como funciona a divisão de código no React?

Existem várias maneiras de implementar a divisão de código no React. Empacotadores diferentes funcionam de maneiras diferentes, mas o React tem vários métodos para personalizar o empacotamento, independentemente do empacotador usado.

Importações dinâmicas

Talvez a maneira mais simples de dividir o código no React seja com a sintaxe de “importação” dinâmica. Alguns empacotadores podem analisar instruções de importação dinâmica nativamente, enquanto outros requerem alguma configuração. A sintaxe de importação dinâmica funciona para geração de sites estáticos e renderização do lado do servidor.

As importações dinâmicas usam a função então para importar apenas o código que é necessário. Qualquer chamada para o código importado deve estar dentro dessa função.

 import ("./parseText"). then (parseText=> { console.log (parseText.count ("Esta é uma string de texto","texto"));
});

Usando React.lazy

React.lazy permite o carregamento lento de importações em muitos contextos. Ele ainda não está disponível para renderização do lado do servidor, mas sua diversidade de funções compensa isso. A função React.lazy permite importar dinamicamente uma dependência e renderizar essa dependência como um componente em uma única linha de código. O componente deve ser renderizado dentro de outro componente que mostra o conteúdo de fallback se a importação dinâmica falhar.

Isso pode incluir conteúdo de erro, embora não seja obrigatório. Se o conteúdo do erro for incluído, ele deve ser incluído em um tipo especial de componente denominado Limite de Erro. O componente Error Boundary deve estar acima de todos os componentes carregados dinamicamente para garantir que sejam exibidos corretamente.

 import React, {Suspense} de'react'; const comp1=React.lazy (()=> import ('./comp1')); function MyComponent () { Retorna ( 
Carregando...
}>
); }

Escolha de pontos de divisão

O objetivo da divisão de código no React é fornecer aos usuários a melhor experiência dinâmica possível. Isso torna a escolha dos locais dentro do código para carregar dependências dinamicamente uma tarefa importante.

O React fornece um bom local padrão para começar em suas rotas, já que os usuários esperam um pequeno atraso ao alternar entre as páginas. A divisão de código dinâmico em rotas geralmente envolve algumas dependências próprias, mas como os usuários geralmente esperam alguma forma de transição de página, um pequeno atraso proposital durante o carregamento pode ser útil.

Como a divisão de código funciona com blocos de componentes?

O React também permite que você divida seu código com base em componentes, em vez de na funcionalidade bruta. Às vezes, um desenvolvedor terá um grupo de componentes React que cria uma peça-chave de sua página e usará esse mesmo grupo de componentes várias vezes. Quando isso acontece, o carregamento lento das dependências dos componentes sempre que os componentes são necessários pode tornar a página mais lenta.

A função React carregável oferece a capacidade de criar um carregador personalizado que importa dinamicamente o trecho de código necessário apenas uma vez. O empacotamento das importações dinâmicas em um carregador impede que elas sejam incluídas em um pacote de carregamento de página.

 import Carregável de'react-loadable'; function ProgressDiv () { return 
Div Loading In Progress...
; } const LoaderContainerComponent=Loadable ({ carregador: ()=> importar ('./loadable-another-component'), CarregandoComponent: ProgressDiv }); class MyComponent extends React.Component { render () { return ; } }

O mesmo processo pode ser usado carregando um ou mesmo um grupo de componentes várias vezes. Carregar um grupo de componentes geralmente requer várias importações dinâmicas e extrair os tipos de componentes necessários, mas a ideia básica é a mesma.

Mesmo depois que o chunking é otimizado, pode ser difícil controlar o conteúdo de um chunk. Por padrão, os fragmentos têm nomes gerados aleatoriamente que podem dificultar a depuração.

Alguns bundlers, como o Webpack, permitem que você nomeie seus pedaços colocando comentários nas implementações do carregador de componentes. Os blocos de nomenclatura podem ajudá-lo a descobrir quanta sobrecarga é necessária para carregar cada um. Carregar muitos pedaços pequenos pode tornar uma página mais lenta do que ter um único pedaço grande, mesmo se tudo no pedaço grande não for usado sempre que a página for carregada.

O React elimina muito trabalho manual do processo de divisão de código, permitindo que os desenvolvedores se concentrem na criação de programas robustos. A divisão de código é uma parte essencial da web moderna, então não é de se admirar que tantos desenvolvedores dependam dela no React.

A postagem Divisão de código no React: uma visão geral apareceu primeiro no LogRocket Blog .

Source link