Innehållsförteckning[Dölj][Visa]
- Så, vad är en modulfederation?
- Varför modulfederation?
- Modulfederation kärnkomponenter
Modul Federation kärnfunktioner+-
- Utmärkt webbprestanda
- Effektiv utveckling
- Förmågan att självläka och redundans
- Effektiv hantering av vanliga beroenden
- Istället för att behöva distribuera om konsumenter, distribuera oberoende kod.
- När du kör, importera kod från andra builds.
- Förbättrad utvecklarupplevelse samtidigt som kundupplevelsen bevaras
- Mikrofrontends fungerar på ett monolitiskt sätt.
- Slutsats
Konceptet med mikrogränssnitt tillämpar mikrotjänster på frontendutveckling.
Tanken är att dela upp applikationen eller webbplatsen i mindre, oberoende utvecklade bitar som sedan kopplas ihop under körning, i motsats till att skapa dem som en enda, sammanhängande monolit.
Metoden gör det möjligt för dig att skapa andra komponenter i applikationen med hjälp av andra teknologier och med oberoende team.
Tanken är att minska underhållskostnaderna för en typisk monolit genom att segmentera utvecklingen på detta sätt.
Genom att tillåta dem att koncentrera sig på ett visst område av en applikation som ett sammanhängande team, möjliggör det också nya former av samarbete mellan backend- och frontend-utvecklare.
Till exempel kan du ha ett team som är ensamt ansvarigt för sökförmågan eller någon annan aspekt av en nyckelprodukt som är avgörande för ett företag.
Tack vare modulfederationen har du tillräckligt med funktionalitet för att hantera det arbetsflöde som mikro frontend tillvägagångssätt mandat.
Det här inlägget kommer att ta en djup titt på modulfederationens arkitektur, såväl som dess huvudfunktioner och applikationsmönster.
Så vad är en modulförbund?
Javascripts modulfederationsdesign använder sig av återanvända delar i många applikationer.
Det är en ganska grundläggande jargong, men jag har helt enkelt fått det att verka så blåsigt.
Eftersom vi alla är bekanta med att dela komponenter inom en React-applikation, uppnår Module Federation i praktiken samma mål i praktiken, med undantaget att den dynamiskt exponerar applikationsmoduler för konsumtion av andra applikationer.
Module Federation försöker övervinna problemet med moduldelning i ett distribuerat system genom att leverera de delade nyckelelementen som makro eller mikro efter önskemål.
Detta uppnås genom att de tas bort från dina appar och byggarbetsflödet.
Varför modulfederation?
Här är några faktorer som modulfederation enkelt kan hantera:
- Extern och DLL (Dynamic Link Libraries) var allt vi ibland hade för att dela funktionalitet mellan appar. Allt detta gjorde skalningskoddelning extremt utmanande.
- NPM är trögt.
- När två separata program delar avgörande kod måste de vara dynamiska och flexibla.
För att fristående appar ska vara helt i sitt eget arkiv, distribueras separat och fungera som sitt eget oberoende SPA skapades Module Federation.
Modulfederation kärnkomponenter
Innan du dyker djupare är det viktigt att kort diskutera några nya koncept som modulfederation för med sig.
- Värd: När en sida läses in kallas konstruktionen eller modulen som initialt initierades en värd. En leverantör kan ses som en värd.
- Fjärrkontroll: En fjärrkontroll är en annan konstruktion som använder en del av värden. De kallas också kunder.
- Dubbelriktad värd: en Webpack-byggnad som fungerar som både en fjärrkontroll som andra värdar använder och en värd som använder fjärrkontroller.
- Leverantörsfederation: möjliggör deklarativt delad körtidsdelning av npm-modulberoenden för en värd eller fjärrkontroll, oavsett varifrån de laddas. Ett av de stora prestandaproblemen med mikrofrontends löses på detta sätt.
Mönster för federerad applikation
Evergreen Design System
En av de mest grundläggande formerna av federerade applikationer är en "evergreen remote", som är en delad fjärrkontroll som ett "Design System" eller "Component library" som distribueras oberoende och uppdateras för alla användare.
Utan att varje appteam behöver lägga tid på revideringar kan detta vara till hjälp för att säkerställa att alla onlinesajter följer den senaste företagsidentiteten.
För att utforma och införa de gränser och procedurer som krävs för att garantera säkra, fortlöpande uppdateringar, kan detta vara en användbar plats för företag att börja när de överväger en federerad applikationsarkitektur.
Följande är några användningsfall där oberoende distribuerade delade fjärrkontroller kan vara en lämplig passform:
- Designa system
- Applikationsskal
- Komponentbibliotek
- konsumenter
- Delade verktygssatser
- Alternativa distributionsmodeller för widgets som används av interna eller externa
Multi-SPA-moduldelning
Återanvänd redan exporterade funktioner, såsom komponenter, i olika fristående ensidiga appar. Förmånerna inkluderar:
- Konsumenter får automatiska uppdateringar
- Domänexpertis finns kvar i teamet som ansvarar för det.
- Effektiviserar distributionsproceduren eftersom separata modulsläpp inte är nödvändiga.
Shell driven federation
Den skaldrivna federationen inkluderar:
- När du skapar en ny produktversion väntar inte produktteamet på att Checkout-teamet ska slutföra sitt jobb.
- När du byter fjärrkontroll sker ingen omladdning av sidan.
- Vid behov erbjuder Shell långsam fjärrladdning och (toppnivå) routing.
- Routing över fjärrkontroller är möjlig via leverantörsfederation, vilket möjliggör återanvändning av ofta använda npm-paket.
- Shell erbjuder ramverket och andra vanliga beroenden som återanvänds av de lat laddade fjärrkontrollerna.
Multi-shell federation
Liknar den skaldrivna federationen som beskrivs ovan, men använde olika skal.
Det innehåller:
- ett antal skal
- Vit-märkning
- Alla fjärrkontroller krävs inte av Shell B eller har oberoende implementeringar.
Modul Federation kärnfunktioner
Utmärkt webbprestanda
Problemet med den normala NPM-modulsammansättningen är att när antalet anhöriga ökar, växer applikationens storlek i allmänhet.
För att undvika att ladda buntar när din applikation laddas och bara ladda dem när det behövs, erbjuder Module Federation dig möjligheten att ladda buntar lätt.
Detta förhindrar behovet av att ladda ner moduler innan de faktiskt behövs, vilket förbättrar webbplatsens hastighet.
Effektiv utveckling
Varje projekt kan produceras och levereras isolerat och kan utföras av olika team eftersom Module Federation uppmuntrar dig att organisera din ansökan i diskreta projekt så att du kan bygga och distribuera dem separat (och därmed parallellt).
Förmågan att självläka och redundans
Delade beroenden tillåter Module Federation att hålla reda på alla dina programs beroenden på ett ställe.
På så sätt, även när en applikation inte deklarerar ett beroende eller när det finns nätverksproblem, vet den fortfarande vad den behöver och kan hantera att ladda ner den efter behov.
Effektiv hantering av vanliga beroenden
Module Federation erbjuder dessutom överlägsen beroendehantering, som effektivt löser krav från leverantörer och tredje part så att din applikation aldrig kommer att ladda mer än en version av ett bibliotek.
Istället för att behöva distribuera om konsumenter, distribuera oberoende kod.
Utvecklaren är mycket intresserad av att ha vintergrön funktionalitet. När exponerad beroende funktionalitet har ändrats, kommer det inte att vara nödvändigt att installera om konsumenterna längre.
Jag måste erkänna att detta är en mycket potent egenskap i och för sig, en som kommer att behöva noggrann undersökning för att förhindra oväntade resultat.
När du kör, importera kod från andra builds.
När vi använder NPM-paketmodellen kan vi överväga appar som använder Module Federation som liknar API:er istället för att dela kod och tänka på "bibliotek".
På samma sätt som de också kan ta emot funktionalitet från andra appar, kan webbapplikationer nu tillhandahålla funktionaliteten till andra applikationer.
Förbättrad utvecklarupplevelse samtidigt som kundupplevelsen bevaras
Vilken som helst JavaScript-utvecklare kommer att vara ganska bekväm med Module Federation eftersom det är ett Webpack-plugin som är tillgängligt från och med Webpack version 5.
Detta är faktiskt ganska starkt och spännande om vi tänker efter.
Genom att använda tredjeparts Webpack-lastare, överväg alla komponenter som Webpack paket, inklusive skript, tillgångar, stilar, bilder, nedsättningar och mer.
Genom att använda Module Federation kan alla dessa delas och förenas.
Mikrofrontends fungerar på ett monolitiskt sätt.
Det är ganska enkelt att lägga till delad funktionalitet till din applikation; importera bara paketet som vanligt eller använd synkron laddning.
Alternativt kan asynkron laddning användas för att endast ladda beroenden när det är nödvändigt genom att använda lat laddning.
Slutsats
I det här inlägget har vi diskuterat Module Federation som ett fantastiskt val för att utveckla din mikrogränssnittsapplikation.
Att låta appar utbyta och konsumera funktionalitet under körning uppmuntrar skalbarhet genom att göra det möjligt för olika team att arbeta med oberoende applikationer.
När den gemensamma funktionaliteten ändras behöver du inte designa och distribuera dina konsumenter eftersom den stöder evergreen-funktionalitet.
Ditt program kommer att fungera som en monolit efter att det har ställts in, vilket är fantastiskt.
Delbara beroenden används för att minska storleken på appar. Eftersom många utvecklare redan är bekanta med Webpack-miljön är utvecklarupplevelsen utmärkt.
Kommentera uppropet