0Pricing
React Academy · Aula

Configurando aplicações React hospedeira e remotas

Configure exposições, módulos remotos e dependências compartilhadas em webpack.config.js para uma estrutura hospedeira e duas aplicações React remotas.

Configurando aplicações React hospedeira e remotas é uma aula grátis de React Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.

webpack.config.js da aplicação remota: ModuleFederationPlugin

A aplicação remota adiciona o ModuleFederationPlugin à configuração do webpack com três propriedades fundamentais: name, um identificador exclusivo, por exemplo, "buttonApp"; filename, "remoteEntry.js", a saída do manifesto; e exposes, um mapa do nome público para o caminho do arquivo de origem.

Disponibilizando componentes da aplicação remota

A configuração exposes mapeia um caminho de módulo público para um arquivo local: { './Button': './src/Button' }. Isso significa que a aplicação hospedeira pode importar 'buttonApp/Button' e receber o componente de ./src/Button.tsx. Você pode disponibilizar vários componentes, utilitários ou até páginas completas.

Configuração compartilhada na aplicação remota

A propriedade shared informa ao Module Federation quais módulos devem ser compartilhados entre a aplicação hospedeira e a remota, em vez de duplicados. Para o React: shared: { react: { singleton: true, requiredVersion: deps.react }, 'react-dom': { singleton: true } }. singleton:true impede que várias instâncias sejam carregadas simultaneamente.

webpack.config.js da aplicação hospedeira: referenciando aplicações remotas

A configuração do ModuleFederationPlugin da aplicação hospedeira inclui uma propriedade remotes: { buttonApp: 'buttonApp@http://localhost:3001/remoteEntry.js' }. A chave é o espaço de nomes da importação; o valor combina o nome e a URL da aplicação remota com @, informando ao Webpack onde buscá-la em tempo de execução.

Consumindo a aplicação remota no React

No código React da aplicação hospedeira, importe o componente remoto com uma importação dinâmica: const Button = React.lazy(() => import('buttonApp/Button')). O caminho da importação corresponde ao espaço de nomes da aplicação remota e ao nome do módulo disponibilizado. React.lazy divide o código da importação e o carrega de forma assíncrona.

Envolvendo com Suspense

Como os módulos remotos são carregados de forma assíncrona, sempre envolva o componente remoto importado de forma adiada em um limite Suspense: Suspense fallback=Loading... /. A alternativa é renderizada enquanto o Module Federation busca o remoteEntry.js e o bloco do componente na URL da aplicação remota.

Por que as instâncias únicas são essenciais

Os ganchos do React, como useState, useContext e useEffect, dependem de uma única instância interna do React para acompanhar o estado do componente. Se a aplicação hospedeira e a remota carregarem suas próprias cópias do React, os ganchos lançarão erros de "chamada de gancho inválida". singleton:true força o compartilhamento de uma única instância do React, resolvendo completamente essa classe de erros.

Resolução de conflitos de versão

Quando a aplicação hospedeira utiliza react@18.2.0 e a remota utiliza react@18.3.0, o escopo compartilhado do Module Federation negocia qual versão usar. Com singleton:true e requiredVersion, normalmente ele utiliza a versão mais alta, se for compatível. Definir requiredVersion: '>=18.0.0' em vez de uma versão fixa permite intervalos de versões flexíveis.

TypeScript: declarações de módulos

O TypeScript não conhece os módulos remotos em tempo de compilação, portanto importações como import('buttonApp/Button') gerarão erros de tipo sem declarações. Utilize @module-federation/typescript ou crie manualmente arquivos .d.ts que declarem os tipos dos módulos, obtendo segurança de tipos para as propriedades dos componentes remotos.

Testando a configuração localmente

Execute as duas aplicações simultaneamente: a aplicação remota na porta 3001 e a aplicação hospedeira na porta 3000. Abra a aplicação hospedeira — o ambiente de execução do Module Federation buscará http://localhost:3001/remoteEntry.js, descobrirá o módulo Button, baixará o bloco correspondente e o renderizará dentro da aplicação hospedeira como se fosse um componente local.

Configuração da URL de produção

Em produção, substitua localhost:3001 pela URL implantada da aplicação remota. Um padrão comum é utilizar uma variável de ambiente para a URL da aplicação remota, permitindo que a integração e a entrega contínuas injetem a URL correta para cada ambiente: buttonApp: 'buttonApp@' + process.env.BUTTON_REMOTE_URL + '/remoteEntry.js'.

Módulos compartilhados como instância única

Por que o React deve ser configurado como uma instância única na configuração compartilhada do Module Federation?

Recapitulação da lição

Configurar o Module Federation exige o ModuleFederationPlugin tanto na aplicação remota, com name, filename e exposes, quanto na aplicação hospedeira, com remotes. Consuma componentes remotos por meio de React.lazy e de uma importação dinâmica envolvida em Suspense. O React e o React DOM devem ser instâncias únicas compartilhadas para evitar erros de ganchos causados por várias instâncias. Declarações do TypeScript e URLs de aplicações remotas definidas por variáveis de ambiente completam uma configuração pronta para produção.

Perguntas Frequentes

A aula “Configurando aplicações React hospedeira e remotas” é grátis?

Sim — o texto completo de “Configurando aplicações React hospedeira e remotas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.

O que vou aprender em “Configurando aplicações React hospedeira e remotas”?

Configure exposições, módulos remotos e dependências compartilhadas em webpack.config.js para uma estrutura hospedeira e duas aplicações React remotas. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar React Academy?

Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Configurando aplicações React hospedeira e remotas”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de React Academy?

Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Federação de módulos: importações dinâmicas em tempo de execução
  2. Configurando aplicações React hospedeira e remotas
  3. Compartilhando estado e roteamento entre remotos
  4. Versionamento, implantação e orquestração
← Voltar para React Academy