Como implementar microfrontend com ReactJS?

como-implementar-microfrontend-com-reactjs?

Microfrontend é uma abordagem que divide uma grande aplicação em pequenos pedaço ou pequeno apps, esse conceito segue a ideia de “microserviço”, porém no lado do frontend. Resumidamente, o gráfico apresentado mostra como funciona uma aplicação que possui uma arquitetura microfrontend.

Conceitos

Antes de entrarmos na implementação é preciso entender alguns termos e conceitos. Existem dois termos que são bastante utilizados Host e Remotes.

Host é à aplicação principal e funciona com um container da aplicação. É nele que renderizamos todos os nossos microfrontends.

Remotes são os microfrontends. Aqui podemos fazer implementações de usando frameworks distintos e se preocupando somente em expor o que for necessário para o Host renderizar.

Module federation

É um plugin que permite compartilhar dependências entre as aplicações definindo quais módulos podem ser expostos ou consumidos.

Implementação

Para exemplificar essa implementação, estarei usando o react + viteJs.

Setup inicial do projeto ainda não muda! Esse será o Host (container)

estrutura de pasta

Vamos fazer uma configuração no projeto no arquivo vite.config.ts

vite.config.ts

Para o module federation estamos usando uma dependência do vite para fazer essa gestão @originjs/vite-plugin-federation. Fazemos um remote para consumir os microfrontends referenciando os arquivos que estão com os módulos exportados. No exemplo, no microfrontend está no link http://localhost:4173/assets/remoteEntry.js que é o app login.

Agora é só adicionar o app no seu arquivo de renderização do host.

vite.config.ts

Fazemos a importação do microfrontend no projeto e carregamos da maneira que já conhecemos no react.

Agora que temos nossa configuração do host finalizada, agora precisamos fazer montar um pequeno app que seria nosso remote.

Vamos criar um outro projeto com vite e modificaremos o arquivo vite.config.ts

vite.config.ts

Agora com uma novidade, adicionamos o filename, exposes e shared.

Filename é o nome do arquivo que ficará nossos módulos exportados.

Exposes é são os componentes que queremos exportar para microfrontend.

Shared são dependências que queremos compartilhar.

Mais informações estão na biblioteca originjs/vite-plugin-federation.

Após esses ajustes, precisamos realizar um build no projeto e executar com algum servidor para conseguimos pegar o arquivo.js exportado.

Link da implementação completa código fonte

Conclusão

É uma arquitetura escalável e com boas possibilidades para fazer uma modernização em projetos legados sem que precise parar toda aplicação que está em produção. É um forte aliado para os devs que tem surgido em propostas de desenvolvimento.

Total
0
Shares
Leave a Reply

Your email address will not be published. Required fields are marked *

Previous Post
arrow-diagrams-for-projects:-activity-on-node-vs.-activity-on-arrow

Arrow Diagrams for Projects: Activity on Node vs. Activity on Arrow

Next Post
quality-and-requirements:-get-the-full-story

Quality and Requirements: Get the Full Story

Related Posts
在termux中安装和使用google-gemini-cli的完整指南

在Termux中安装和使用Google Gemini CLI的完整指南

什么是Google Gemini CLI? Google Gemini CLI是一个命令行工具,允许开发者直接在终端中与Google的Gemini AI模型交互。它提供了简单高效的方式来测试和集成Gemini的强大AI能力到你的开发工作流中。 Gemini是Google最新推出的大型语言模型,具有强大的自然语言理解和生成能力,可以用于代码生成、问题解答、内容创作等多种场景。 在Termux中安装Gemini CLI Termux是Android设备上的强大终端模拟器,下面我们一步步教你如何在Termux中安装和使用Gemini CLI。 1. 准备工作 首先确保你的Termux是最新版本,并更新软件包: pkg update &&…
Read More