Índice analítico[Ocultar][Mostrar]
- Entón, que é unha federación de módulos?
- Por que federación de módulos?
- Componentes básicos de federación de módulos
Funcións básicas do módulo Federation+-
- Excelente rendemento web
- Desenvolvemento efectivo
- A capacidade de autocuración e redundancia
- Manexo eficaz das dependencias comúns
- En lugar de ter que volver implantar os consumidores, implementa código independente.
- Ao executar, importa código doutras compilacións.
- Mellora a experiencia do programador mentres se preserva a experiencia do cliente
- Os micro-frontends operan de forma monolítica.
- Conclusión
O concepto de micro frontends aplica microservizos ao desenvolvemento de frontends.
A idea é dividir a aplicación ou o sitio web en pezas máis pequenas e desenvolvidas de forma independente que despois se conectan durante o tempo de execución, en lugar de crealas como un único monólito cohesionado.
O método permítelle crear outros compoñentes da aplicación utilizando outras tecnoloxías e con equipos independentes.
A idea é reducir os gastos de mantemento relacionados cun monolito típico segmentando o desenvolvemento deste xeito.
Ao permitirlles concentrarse nunha área particular dunha aplicación como un equipo coherente, tamén fai posibles novas formas de cooperación entre os desenvolvedores de backend e frontend.
Por exemplo, pode ter un equipo que sexa o único responsable da capacidade de busca ou doutro aspecto dun produto clave que sexa crucial para unha empresa.
Grazas á federación de módulos, tes funcionalidade suficiente para xestionar o fluxo de traballo que o micro frontend mandatos de aproximación.
Esta publicación analizará en profundidade a arquitectura da federación de módulos, así como as súas principais características e patróns de aplicación.
Entón, que é un federación de módulos?
O deseño de federación de módulos de Javascript fai uso de pezas reutilizadas en moitas aplicacións.
É unha xerga bastante básica, pero acabo de facer que pareza que parece ventoso.
Como todos estamos familiarizados co uso compartido de compoñentes nunha aplicación React, Module Federation consegue efectivamente o mesmo obxectivo na práctica, coa excepción de que expón dinámicamente módulos de aplicacións para o seu consumo por outras aplicacións.
Module Federation busca superar o problema de compartir módulos nun sistema distribuído proporcionando eses elementos clave compartidos como macro ou micro segundo se desexe.
Isto conséguese eliminalos das túas aplicacións e do fluxo de traballo de compilación.
Por que federación de módulos?
Aquí tes algúns factores que a federación de módulos pode xestionar facilmente:
- Externos e DLL (Dynamic Link Libraries) eran o único que tiñamos ocasionalmente para compartir funcionalidades entre aplicacións. Todo isto fixo que o uso compartido de código de escala fose extremadamente difícil.
- NPM é lento.
- Cando dous programas separados comparten código crucial, deben ser dinámicos e flexibles.
Para que as aplicacións autónomas estean totalmente no seu propio repositorio, se despreguen por separado e funcionen como o seu propio SPA independente, creouse a Federación de Módulos.
Componentes básicos de federación de módulos
Antes de mergullarse máis a fondo, é importante discutir brevemente algúns novos conceptos que aporta a federación de módulos.
- Host: cando se carga unha páxina, a compilación ou módulo inicializado chámase host. Un provedor pódese considerar un host.
- Remoto: un control remoto é unha construción diferente que usa unha parte do host. Tamén se lles denomina clientes.
- Anfitrión bidireccional: unha compilación de Webpack que funciona tanto como un control remoto que consumen outros anfitrións como como un host que consume remotos.
- Federación de provedores: permite compartir en tempo de execución compartida de forma declarativa das dependencias do módulo npm para un host ou remoto, independentemente da localización desde a que se carguen. Deste xeito resólvese un dos principais problemas de rendemento cos micro frontends.
Patróns de aplicación federada
Sistema de deseño Evergreen
Unha das formas máis básicas de aplicacións federadas é un "control remoto perenne", que é un control remoto compartido como un "Sistema de deseño" ou "Biblioteca de compoñentes" que se distribúe e se actualiza de forma independente para todos os usuarios.
Sen que cada equipo de aplicacións teña que dedicar tempo ás revisións, isto pode ser útil para garantir que todos os sitios en liña se adhiran á identidade corporativa máis recente.
Co fin de deseñar e poñer en marcha os límites e procedementos necesarios para garantir actualizacións seguras e permanentes, este pode ser un lugar útil para que as empresas poidan comezar cando se plantexan unha arquitectura de aplicacións federadas.
A continuación móstranse algúns casos de uso nos que os controles remotos compartidos implementados de forma independente poden ser adecuados:
- Sistemas de deseño
- Conchas de aplicación
- Bibliotecas de compoñentes
- Os consumidores
- Ferramentas compartidas
- Modelos de distribución alternativos para widgets utilizados por internos ou externos
Compartición de módulos multi-SPA
Reutiliza funcións xa exportadas, como compoñentes, en diferentes aplicacións independentes dunha soa páxina. Os beneficios inclúen:
- Os consumidores reciben actualizacións automáticas
- A experiencia do dominio permanece no equipo que se encarga dela.
- Axiliza o procedemento de implantación porque non son necesarias versións de módulos separadas.
Federación impulsada por Shell
A federación impulsada por shell inclúe:
- Ao crear unha nova versión do produto, o equipo do produto non espera a que o equipo de Checkout complete o seu traballo.
- Ao cambiar de control remoto, non hai ningunha recarga de páxina.
- Cando é necesario, Shell ofrece carga remota lenta e enrutamento (de nivel superior).
- O enrutamento a través de remotos faise posible mediante a federación de provedores, que permite a reutilización dos paquetes npm de uso frecuente.
- Shell ofrece o marco e outras dependencias comúns que son reutilizadas polos mandos a distancia cargados perezosamente.
Federación multishell
Similar á federación guiada por shell descrita anteriormente, pero utilizou shells diferentes.
Contén:
- unha serie de cunchas
- Marcado branco
- Shell B non require todos os mandos a distancia nin teñen implementacións independentes.
Funcións básicas do módulo Federation
Excelente rendemento web
O problema coa composición normal do módulo NPM é que a medida que aumenta o número de dependentes, o tamaño da aplicación xeralmente crece.
Para evitar cargar paquetes cando se carga a aplicación e só cargalos cando sexa necesario, Module Federation ofrécelle a posibilidade de cargar paquetes con preguiza.
Isto evita a necesidade de descargar módulos antes de que sexan realmente necesarios, o que mellora a velocidade do sitio.
Desenvolvemento efectivo
Cada proxecto pode ser producido e entregado de forma illada e pode ser realizado por varios equipos porque Module Federation anímache a organizar a túa aplicación en proxectos discretos para que poidas crealos e implementalos por separado (e, polo tanto, en paralelo).
A capacidade de autocuración e redundancia
As dependencias compartidas permiten que Module Federation faga un seguimento de todas as dependencias do teu programa nun só lugar.
Deste xeito, aínda que unha aplicación non declare unha dependencia ou cando existan problemas de rede, aínda sabe o que necesita e pode xestionar a súa descarga segundo sexa necesario.
Manexo eficaz das dependencias comúns
Ademais, Module Federation ofrece unha xestión superior de dependencias, resolvendo eficazmente os requisitos de provedores e de terceiros para que a súa aplicación nunca cargue máis dunha versión dunha biblioteca.
En lugar de ter que volver implantar os consumidores, implementa código independente.
O programador está moi interesado en ter unha funcionalidade perenne. Unha vez que a funcionalidade dependente exposta cambiou, xa non será necesario reinstalar os consumidores.
Debo admitir que esta é unha característica moi potente en si mesma, que necesitará un exame coidadoso para evitar resultados inesperados.
Ao executar, importa código doutras compilacións.
Ao adoptar o modelo de paquete NPM, podemos considerar as aplicacións que usan a Federación de Módulos semellantes ás API en lugar de compartir código e pensar na "biblioteca".
Do mesmo xeito que tamén poden recibir funcionalidades doutras aplicacións, as aplicacións web agora poden proporcionar a funcionalidade a outras aplicacións.
Mellora a experiencia do programador mentres se preserva a experiencia do cliente
Calquera Desenvolvedor de JavaScript estará bastante cómodo con Module Federation porque é un complemento de Webpack accesible a partir da versión 5 de Webpack.
Isto é realmente forte e intrigante se o pensamos un pouco.
Ao utilizar cargadores de Webpack de terceiros, considere todos os compoñentes que Webpack paquetes, incluíndo guións, recursos, estilos, imaxes, rebaixas e moito máis.
Ao usar Module Federation, todos estes pódense compartir e federar.
Os micro-frontends operan de forma monolítica.
É bastante sinxelo engadir funcionalidades compartidas á túa aplicación; basta con importar o paquete como normal ou usar a carga síncrona.
Alternativamente, a carga asíncrona pódese usar para cargar dependencias só cando sexa necesario mediante a carga preguiceira.
Conclusión
Nesta publicación, falamos de Module Federation como unha opción fantástica para desenvolver a túa aplicación micro-frontend.
Permitir que as aplicacións intercambien e consuman funcionalidades en tempo de execución fomenta a escalabilidade ao permitir que varios equipos traballen en aplicacións independentes.
Cando cambie a funcionalidade común, non terás que deseñar e implementar os teus consumidores xa que admite a funcionalidade perenne.
O teu programa funcionará como un monólito despois de que se configure, o que é fantástico.
As dependencias compartibles úsanse para reducir o tamaño das aplicacións. Dado que moitos desenvolvedores xa están familiarizados co entorno Webpack, a experiencia dos desenvolvedores é excelente.
Deixe unha resposta