Angular CLI Configuração
Este guia explains como para integrate Module Federation com Angular CLI. O @angular-architects/module-federation plugin é usado para assist com este integração.
Prerequisites
- Angular CLI: Versão 10 ou higher.
- Plugin Instalação: Instale o
@angular-architects/module-federationplugin.
Instalação
To começa, configure o Angular CLI para usar Module Federation during o build phase. Uma custom builder é needed para unlock Module Federation's potential.
O @angular-architects/module-federation pacote fornece este custom builder.
Use o ng add comando para incorporate it em your projetos:
O --type argument, introduced em versão 14.3, ensures esse apenas o necessário configuração é generated.
Shell (Host) Configuração
O Shell (Host) é crucial for Module Federation integração.
Este section configures o Shell para suporte lazy-carregamento de uma FlightModule por meio de routing.
Routing Configuração
Start by defining a aplicação rotas, specifying uma lazy-carregado FlightModule usando uma virtual caminho:
In este configuração, o caminho 'mfe1/Module' é uma virtual representation, indicating it doesn't physically exist within o Shell aplicação. Instead, it's uma reference para um módulo em uma separate projeto.
TypeScript Typing
Crie uma tipo definition para o virtual caminho:
Este helps o TypeScript compiler understand o virtual caminho.
Webpack Configuração
Instruct Webpack para resolve all caminhos prefixed com mfe1 para uma remote projeto. Este é done no webpack.config.js arquivo:
No remotes section, o caminho mfe1 é mapped para o remote micro-frontend's ponto de entrada. Este ponto de entrada, generated by Webpack, contains essential information for interacting com o micro-frontend.
For desenvolvimento, hardcoding o remote entry's URL é enough. However, uma dynamic approach é necessário for production. O concept de dynamic remotes é further explored em uma dedicated documentation page on Dynamic Remotes.
- O
sharedpropriedade specifies o npm pacotes para ser shared entre o Shell e o micro-frontend(s). Usando oshareAllhelper método, all dependências listed em yourpackage.jsonsão shared. While este facilitates uma quick configuração, it may lead para um excessive number de dependências compartilhadas, que could ser uma concern for optimization. - O combination de
singleton: trueestrictVersion: truesettings instructs Webpack para lança uma runtime erro se there é uma versão mismatch entre o Shell e o micro-frontend(s). ChangingstrictVersionparafalsewould instead result em uma runtime aviso. - O
requiredVersion: 'auto'opção, fornecido pelo@angular-architects/module-federationplugin, automatically determines o versão de yourpackage.json, helping para prevent versão-related issues.
Configuring o Remote
O Micro-frontend, também known as o Remote em Module Federation, has uma structure semelhante a uma standard Angular app. It has specific rotas no AppModule e uma FlightsModule for flight-related tasks. Este section explains como para smoothly carregue o FlightsModule no Shell (Host).
Rota Definition
Establish o basic rotas within o AppModule:
Este simple routing configuração navigates para uma HomeComponent quando a aplicação é accessed.
Módulo Creation
Crie uma FlightsModule para tratar flight-related operations:
Este módulo contains uma rota para uma FlightsSearchComponent defined as follows:
Exposing Módulos via Webpack Configuração
To habilite o carregamento de FlightsModule no Shell, exponha it por meio do Remote's Webpack configuração:
In este configuração:
- O
namepropriedade identifies o micro-frontend asmfe1. - O
exposespropriedade signifies o exposure deFlightsModuleunder o public nameModule, allowing its consumption pelo Shell. - O
sharedpropriedade lists o libraries para ser shared com o Shell, usando oshareAllmétodo para compartilhar all dependências encontrada em yourpackage.json. Osingleton: trueestrictVersion: truepropriedades ensure esse uma single versão de shared libraries é usado, e uma runtime erro é triggered em case de versão incompatibility, respectively.
Starting o Aplicações
Having definir up o Shell (Host) e Micro-frontend (Remote), it's time para test o configuração para garantir o seamless integração de Module Federation.
To começa o Shell e Micro-frontend, use o seguintes comandos:
Navigate para o Flights section no Shell para see o Micro-frontend being dinamicamente carregado.
O plugin installs um npm script run:all during o ng-add e init schematics, allowing for simultaneous serving de all aplicações:
Optimizing Dependência Compartilhamento
O initial configuração com shareAll é simple e functional, but ele pode result no criação de unnecessarily large shared bundles.
To manage dependências compartilhadas mais effectively, consider switching de shareAll para usando o share helper. Este fornece finer control over que dependências são shared:
In este configuração, o share helper allows for explicit compartilhamento de selected pacotes, enabling uma mais optimized bundle compartilhamento e potentially reducing carregue times.