# WU vs Module Federation e single-spa

Avalie WU como alternativa para compor microfrontends: compare carregamento de módulos, ciclo de vida, comunicação e responsabilidades do shell.

<span id="qué-problema-estás-resolviendo"></span>

<span class="section-anchor" id="section-1"></span>

## Qual problema você está resolvendo

Se procura uma alternativa ao Module Federation, diferencie compartilhar módulos de coordenar aplicações completas. WU organiza aplicações por registro, carregamento e ciclo de vida, e oferece store, eventos e contratos. A escolha depende de onde você quer colocar a fronteira de integração.

A comparação a seguir descreve WU 4.0.0, o conceito de Module Federation documentado pelo webpack e o modelo de aplicações do single-spa. Não é um teste de desempenho nem uma comparação de todos os plugins dos seus ecossistemas.

<span id="comparación-de-responsabilidades"></span>

<span class="section-anchor" id="section-2"></span>

## Comparação de responsabilidades

| Decisão | WU Framework | Module Federation | single-spa |
| --- | --- | --- | --- |
| Unidade de integração | Aplicação com manifest e ciclo de vida | Módulos expostos e consumidos entre builds | Aplicação com carregamento, ativação e ciclo de vida |
| Montagem da interface | O host solicita mount/unmount ao WU | O consumidor decide como renderizar o módulo | O runtime ativa e monta as aplicações registradas |
| Dependências compartilhadas | Configuração explícita do build e do carregamento de WU | Configuração de módulos compartilhados e versões | Decisão do ambiente de carregamento e das aplicações |
| Dados entre aplicações | Store, eventos e contratos do runtime | Contrato definido pelos módulos e seus consumidores | Contrato definido pelas aplicações e utilitários compartilhados |

Fontes: [Module Federation no webpack](https://webpack.js.org/concepts/module-federation/), [modelo do single-spa](https://single-spa.js.org/docs/getting-started-overview/) e [APIs de WU](/pt/api/). Consulte a documentação da implementação específica se usar outro plugin de federação.

<span id="cuándo-evaluar-wu-como-alternativa"></span>

<span class="section-anchor" id="section-3"></span>

## Quando avaliar WU como alternativa

Avalie WU quando quiser compor aplicações com um contrato comum de montagem e precisar de estado, eventos ou serviços entre elas. O critério é a composição e a comunicação, independentemente da tecnologia de cada aplicação. Comece por uma capacidade com limites claros e verifique a integração usando o [guia de microfrontends](/pt/docs/guides/microfrontends/).

O pacote inclui adapters para **React, Vue, Angular, Svelte, Preact, Solid, Lit, Vanilla, Alpine, Qwik, Stencil, HTMX e Stimulus**. Consulte os contratos na [referência de adapters](/pt/docs/framework/api-adapters/).

Para outra tecnologia, registre `mount` e `unmount` com `wu.define`, ou crie um adapter com [`createWuAdapter`](/pt/docs/framework/api-adapters/#createwuadapter). O contrato comum permite conectar aplicações com o mesmo framework ou com frameworks diferentes.

Vale avaliar Module Federation quando você precisa consumir módulos de outros builds e gerenciar dependências compartilhadas nesse nível. Vale avaliar single-spa quando busca aplicações com regras de ativação e lifecycles em um root config. Nenhuma escolha elimina o projeto de contratos nem a operação dos deploys.

<span id="qué-cambia-al-migrar"></span>

<span class="section-anchor" id="section-4"></span>

## O que muda na migração

WU não interpreta automaticamente uma configuração de remotes do Module Federation nem um root config do single-spa. Identifique cada entrada, crie seu manifest, conecte o renderer ao ciclo de vida e mova as decisões globais para o shell. Defina como traduzirá os contratos de comunicação existentes e como voltará à versão anterior se uma entrega falhar.

O shell mantém as rotas globais; WU não expõe um router público. Também não presuma que executar módulos no mesmo contexto JavaScript cria uma fronteira de segurança. Essas responsabilidades são explicadas em [arquitetura](/pt/docs/guides/architecture/).

<span id="una-prueba-para-decidir"></span>

<span class="section-anchor" id="section-5"></span>

## Um teste para decidir

Compare a mesma capacidade no seu ambiente: carregamento inicial, mudança de rota, atualização de dados, desmontagem, falha de rede e uma nova versão de dependência. Registre o tamanho transferido e os tempos com o mesmo navegador e condições de cache. Use o [exemplo de comunicação](/pt/docs/guides/shared-counter/) e a [saída de produção](/pt/docs/guides/production/) como ponto de partida para WU.