Dele avhengigheter
Del Angular og biblioteker mellom remote-applikasjoner.
Dele avhengigheter er en gratis leksjon i Angular Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Angular Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Angular Academy inneholder totalt 4 leksjoner.
Hvorfor dele avhengigheter
Hvis hosten og tre remotes hver bygger inn sin egen kopi av Angular, laster nettleseren ned Angular fire ganger. Enda verre er det at den ender opp med flere Angular-instanser som bryter avhengighetsinjiseringen. Deling sikrer at én enkelt kopi lastes inn én gang og gjenbrukes av alle.
Delen shared
I federation.config.js erklærer objektet shared hvilke avhengigheter som deles mellom host og remotes. Native Federation dedupliserer dem under kjøring.
module.exports = withNativeFederation({
shared: {
...shareAll({ singleton: true, strictVersion: true }),
},
});Hjelpefunksjonen shareAll
shareAll() deler alle avhengighetene i package.json med én konfigurasjon, noe som er et vanlig utgangspunkt. Deretter kan du overstyre bestemte pakker.
shared: {
...shareAll({ singleton: true, strictVersion: true, requiredVersion: 'auto' }),
}singleton: Hvorfor det er viktig for Angular
singleton: true tvinger frem nøyaktig én instans av en pakke i hele appen. Angular core, RxJS og ruteren MÅ være singletoner; to kopier av @angular/core betyr to injektortre og feil under kjøring.
Versjonsforhandling
Når remotes ber om ulike versjoner, velger federation en kompatibel versjon. strictVersion: true gir en feil ved inkompatibilitet i stedet for å laste inn en versjon som ikke samsvarer i stillhet, slik at problemer avdekkes tidlig.
shared: {
'@angular/core': { singleton: true, strictVersion: true, requiredVersion: '^18.0.0' },
}Dele egne biblioteker
Et delt designsystem- eller autentiseringsbibliotek bør også være en singleton, slik at tilstanden (for eksempel den nåværende brukeren) er konsistent. Del det eksplisitt ved navn.
shared: {
'@myorg/design-system': { singleton: true, requiredVersion: 'auto' },
'@myorg/auth': { singleton: true },
}requiredVersion: auto
requiredVersion: 'auto' leser versjonen fra package.json, slik at du slipper å hardkode den. Dermed holdes konfigurasjonen synkronisert når du oppgraderer avhengigheter.
Hva skjer under kjøring
Hvert bygg genererer metadata om de delte pakkene. Ved lasting sammenligner federation versjonene på tvers av host og remotes og leverer én delt modul via import map-en, slik at nettleseren bare henter den én gang.
Kostnaden ved å ikke dele
Å glemme å dele Angular er den klassiske feilen: Appen ser ut til å fungere, men gir deretter kryptiske feil som «NG0203: inject() must be called from an injection context» fordi det finnes to Angular-kopier. Deling som singleton forhindrer dette.
Holde versjonene på linje
Uavhengige distribusjoner kan gradvis komme ut av takt. Teamene bør bli enige om et felles versjonsområde for rammeverkspakker og oppgradere koordinert, fordi en host på Angular 18 ikke kan dele trygt med en remote som krever Angular 17.
Hoppe over en delt pakke
Av og til trenger en remote sin egen isolerte kopi av et lite hjelpeverktøy. Du kan utelate den fra delingen slik at den bygges inn privat, og godta den ekstra størrelsen i bytte mot uavhengighet.
shared: {
...shareAll({ singleton: true }),
}
// skip a package by removing it from the shared map / excluding itKort kontrollspørsmål
Hvilke pakker må være singletoner?
Oppsummering
Erklær shared-avhengigheter (ofte via shareAll) slik at host og remotes laster inn én kopi. Gjør rammeverk og tilstandsfulle biblioteker (@angular/core, routeren, RxJS og autentiseringsbiblioteket ditt) til singleton: true; bruk strictVersion og requiredVersion: 'auto' for å oppdage avvik. Hvis du glemmer å dele Angular, oppstår DI-feil.
Lær deg HTML med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 38
- Leksjoner
- 144
Ofte stilte spørsmål
Er leksjonen «Dele avhengigheter» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Angular Academy, inkludert «Dele avhengigheter», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Angular Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Dele avhengigheter»?
Del Angular og biblioteker mellom remote-applikasjoner. Du øver på Angular Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Angular Academy?
Ingen tidligere erfaring er nødvendig. Angular Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Dele avhengigheter»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Angular Academy-leksjonen?
Ja. Alle Angular Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.