Innholdsfortegnelse[Gjemme seg][Forestilling]
- Så, hva er en modulføderasjon?
- Hvorfor modulforbund?
- Modul federation kjernekomponenter
Modul Federation kjernefunksjoner+-
- Utmerket nettytelse
- Effektiv utvikling
- Evnen til selvhelbredelse og redundans
- Effektiv håndtering av vanlige avhengigheter
- I stedet for å måtte distribuere forbrukere på nytt, distribuer uavhengig kode.
- Når du kjører, importer kode fra andre bygg.
- Forbedret utvikleropplevelse samtidig som klientopplevelsen bevares
- Mikrofrontends opererer på en monolittisk måte.
- konklusjonen
Konseptet med mikrofrontends bruker mikrotjenester til frontendutvikling.
Ideen er å dele applikasjonen eller nettstedet opp i mindre, uavhengig utviklede deler som deretter kobles sammen under kjøring, i motsetning til å lage dem som en enkelt, sammenhengende monolitt.
Metoden lar deg lage andre komponenter i applikasjonen ved hjelp av andre teknologier og med uavhengige team.
Tanken er å redusere vedlikeholdsutgiftene knyttet til en typisk monolitt ved å segmentere utviklingen på denne måten.
Ved å la dem konsentrere seg om et bestemt område av en applikasjon som et sammenhengende team, gjør det også nye former for samarbeid mellom backend- og frontend-utviklere mulig.
For eksempel kan du ha et team som er eneansvarlig for søkefunksjonen eller et annet aspekt ved et nøkkelprodukt som er avgjørende for en bedrift.
Takket være modulføderasjonen har du nok funksjonalitet til å håndtere arbeidsflyten som mikro frontend tilnærmingsmandater.
Dette innlegget vil ta en dyp titt på arkitekturen til modulføderasjonen, så vel som dens hovedfunksjoner og applikasjonsmønstre.
Så, hva er en modulforbund?
Javascripts modulføderasjonsdesign gjør bruk av gjenbrukte deler i mange applikasjoner.
Det er ganske grunnleggende sjargong, men jeg har rett og slett fått det til å virke som luftig.
Ettersom vi alle er kjent med å dele komponenter i en React-applikasjon, oppnår Module Federation effektivt det samme målet i praksis, med unntak av at det dynamisk eksponerer applikasjonsmoduler for forbruk av andre applikasjoner.
Module Federation søker å overvinne problemet med moduldeling i et distribuert system ved å levere disse nøkkelelementene som makro eller mikro etter ønske.
Dette oppnås ved å få dem fjernet fra appene dine og byggearbeidsflyten.
Hvorfor modulforbund?
Her er noen faktorer som modulforbund enkelt kan håndtere:
- Eksterne filer og DLL-er (Dynamic Link Libraries) var alt vi noen ganger hadde for å dele funksjonalitet mellom apper. Alt dette gjorde deling av skaleringskode ekstremt utfordrende.
- NPM er trege.
- Når to separate programmer deler avgjørende kode, må de være dynamiske og fleksible.
For at frittstående apper skal være helt i sitt eget depot, distribuere separat og fungere som sitt eget uavhengige SPA, ble Module Federation opprettet.
Modul federation kjernekomponenter
Før du dykker dypere, er det viktig å kort diskutere noen få nye konsepter som modulforbund bringer.
- Vert: Når en side lastes, kalles bygget eller modulen som ble initialisert en vert. En leverandør kan betraktes som en vert.
- Fjernkontroll: En fjernkontroll er en annen konstruksjon som bruker en del av verten. De blir også referert til som kunder.
- Toveis vert: en Webpack-bygning som fungerer både som en fjernkontroll som andre verter bruker og en vert som forbruker fjernkontroller.
- Leverandørføderasjon: muliggjør deklarativt delt kjøretidsdeling av npm-modulavhengigheter for en vert eller fjernkontroll, uavhengig av plasseringen de lastes fra. Et av de største ytelsesproblemene med mikrofrontends løses på denne måten.
Mønstre for Federated Application
Evergreen Design System
En av de mest grunnleggende formene for fødererte applikasjoner er en "evergreen remote", som er en delt fjernkontroll som et "Design System" eller "Component library" som distribueres uavhengig og oppdateres for alle brukere.
Uten at hvert appteam trenger å bruke tid på revisjoner, kan dette være nyttig for å sikre at alle nettsider overholder den nyeste bedriftsidentiteten.
For å designe og sette på plass grensene og prosedyrene som er nødvendige for å garantere sikre, løpende oppdateringer, kan dette være et nyttig sted for bedrifter å starte når de vurderer en forent applikasjonsarkitektur.
Følgende er noen brukstilfeller der uavhengig distribuerte delte fjernkontroller kan passe:
- Design systemer
- Søknad skjell
- Komponentbiblioteker
- Forbrukere
- Delte verktøysett
- Alternative distribusjonsmodeller for widgets brukt av interne eller eksterne
Multi-SPA-moduldeling
Gjenbruk allerede eksporterte funksjoner, for eksempel komponenter, i forskjellige frittstående enkeltside-apper. Fordelene inkluderer:
- Forbrukere mottar automatiske oppdateringer
- Domeneekspertise forblir på teamet som har ansvaret for det.
- Strømlinjeformer distribusjonsprosedyren fordi separate modulutgivelser ikke er nødvendige.
Shell-drevet forbund
Den skalldrevne føderasjonen inkluderer:
- Når du oppretter en ny produktversjon, venter ikke produktteamet på at Checkout-teamet skal fullføre jobben sin.
- Når du bytter fjernkontroll, er det ingen sideinnlasting.
- Når det er nødvendig, tilbyr Shell langsom ekstern lasting og (toppnivå) ruting.
- Ruting på tvers av fjernkontroller er gjort mulig via leverandørforbund, som muliggjør gjenbruk av ofte brukte npm-pakker.
- Shell tilbyr rammeverket og andre vanlige avhengigheter som gjenbrukes av de late lastede fjernkontrollene.
Multi-shell føderasjon
Ligner på den skalldrevne føderasjonen beskrevet ovenfor, men brukte forskjellige skjell.
Det inneholder:
- en rekke skjell
- Hvit merking
- Ikke alle fjernkontroller kreves av Shell B eller har uavhengige implementeringer.
Modul Federation kjernefunksjoner
Utmerket nettytelse
Problemet med den normale NPM-modulsammensetningen er at etter hvert som antallet pårørende øker, vokser applikasjonens størrelse generelt.
For å unngå å laste bunter når applikasjonen din laster inn og bare laste dem når det er nødvendig, tilbyr Module Federation deg muligheten til å laste bunter dovent.
Dette forhindrer behovet for å laste ned moduler før de faktisk er nødvendige, noe som forbedrer nettstedets hastighet.
Effektiv utvikling
Hvert prosjekt kan produseres og leveres isolert og kan utføres av ulike team fordi Module Federation oppfordrer deg til å organisere søknaden din i diskrete prosjekter slik at du kan bygge og distribuere dem separat (og dermed parallelt).
Evnen til selvhelbredelse og redundans
Delte avhengigheter lar Module Federation holde styr på alle programmets avhengigheter på ett sted.
På denne måten, selv når en applikasjon ikke erklærer en avhengighet eller når det er nettverksproblemer, vet den fortsatt hva den trenger og kan håndtere å laste den ned etter behov.
Effektiv håndtering av vanlige avhengigheter
I tillegg tilbyr Module Federation overlegen avhengighetsadministrasjon, som effektivt løser krav fra leverandører og tredjeparter, slik at applikasjonen din aldri vil laste mer enn én versjon av et bibliotek.
I stedet for å måtte distribuere forbrukere på nytt, distribuer uavhengig kode.
Utvikleren er svært interessert i å ha eviggrønn funksjonalitet. Når eksponert avhengig funksjonalitet har endret seg, vil det ikke være nødvendig å installere forbrukerne på nytt lenger.
Jeg må innrømme at dette er en svært potent funksjon i seg selv, en som vil trenge nøye undersøkelse for å forhindre uventede utfall.
Når du kjører, importer kode fra andre bygg.
Når vi tar i bruk NPM-pakkemodellen, kan vi vurdere apper som bruker Module Federation i likhet med APIer i stedet for å dele kode og tenke på "bibliotek".
På samme måte som de også kan motta funksjonalitet fra andre apper, kan nettapplikasjoner nå gi funksjonaliteten til andre applikasjoner.
Forbedret utvikleropplevelse samtidig som klientopplevelsen bevares
Noen JavaScript-utvikler vil være ganske komfortabel med Module Federation fordi det er en Webpack-plugin som er tilgjengelig fra og med Webpack versjon 5.
Dette er faktisk ganske sterkt og spennende hvis vi tenker litt over det.
Ved å bruke tredjeparts Webpack-lastere, vurder alle komponentene som Webpack pakker, inkludert skript, eiendeler, stiler, bilder, markeringer og mer.
Ved å bruke Module Federation kan alle disse deles og forenes.
Mikrofrontends opererer på en monolittisk måte.
Det er ganske enkelt å legge til delt funksjonalitet til applikasjonen din; bare importer pakken som normalt eller bruk synkron lasting.
Alternativt kan asynkron lasting brukes til kun å laste avhengigheter når det er nødvendig ved å bruke lat lasting.
konklusjonen
I dette innlegget har vi diskutert Module Federation som et fantastisk valg for å utvikle din mikro-frontend-applikasjon.
Å la apper utveksle og konsumere funksjonalitet under kjøring oppmuntrer til skalerbarhet ved å gjøre det mulig for ulike team å jobbe med uavhengige applikasjoner.
Når den vanlige funksjonaliteten endres, trenger du ikke designe og distribuere forbrukerne dine siden den støtter eviggrønn funksjonalitet.
Programmet ditt vil fungere som en monolitt etter at det er satt opp, noe som er fantastisk.
Delbare avhengigheter brukes til å redusere størrelsen på apper. Siden mange utviklere allerede er kjent med Webpack-miljøet, er utvikleropplevelsen utmerket.
Legg igjen en kommentar