Git Product home page Git Product logo

mfe-demo-uhuutalks's Introduction

Criando seu primeiro MFE

Para facilitar as coisas usaremos um template que já possui webpack configurado com Plugin de importação e exportação de arquivos chamado ModuleFederationPlugin

pnpx create-mf-app

Passos (faça esses passos 2x uma para remoto e outra para host)

Passo 1:

Escolha o nome do seu app

Passo 2:

Escolha o tipo do seu app (pode ser uma aplicação / API ou Biblioteca), nesse caso iremos com aplicação

Passo 3:

Escolha a porta de saída do seu app

PS: Lembre-se de não usar a mesma ou uma porta já utilizada para evitar reconfigurar webpack e tudo mais

Passo 4:

Escolha a tecnologia do seu app (usremos React, mas sinta-se a vontade para experimentar os outros)

Passo 5:

Escolha a linguagem (usaremos JS por simplicidade, há forma de exportar as tipagens do Typescript, mas demanda um pouco mais do tempo do que a proposta da talk)

Passo 6:

Escolha o modelo css (usaremos o default)

Done

▶️ cd appname
▶️ npm install
▶️ npm start

ou

▶️ cd appname
▶️ yarn
▶️ yarn start

No app remote

Crie seu componente React normalmente

Exportando o Componente

No seu webpack.config.js na raíz do projeto, busque pelo objeto plugins e na prorpieade exposes. O exposes é o responsável por expor o nosso componente para fora da aplicação

Lembre-se

Primeiro parâmetro exportação Nomeada do componente Caminho absoluto dentro da aplicação (usando a extensão do arquivo)

exemplo:

"./MyComponent": "./src/MyComponent.jsx",

PS: atente-se ao nome dentro da propriedade name em ModuleFederationPlugin, pois usaremos posteriormente

No app host

Agora vamos importar o componente

Importar o Componente

primeiro padâmetro, busque no nome do remote, importe usando o padrão nome@url:PORT/fileNameExport.js

exemplo:

 remote:'remote@http://localhost:8082/remotesEntry.js'

Agora no projeto, busque pelo arquivo onde você deseja adicionar o MFE, e importe-o dessa forma:

import MeuComponent  from 'remote/MyComponent'

Utilizando o componente

Você pode usar como um componente normal escrito em JSX, porém são boas práticas e prevenção de erros usar a importação de módulos asincronas do React, para ter tolerância a falhas é recomendado uma classe em React para tratar o erro

Gerando o Estatico

Em remote rode

yarn build

Agora você deve servir a pasta /dist

Recomendo o uso da ferramenta http-server para servir os estaticos localmente

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.