Padziļināts ieskats Moduļu federācijā. Uzziniet, kā koplietot kodu izpildlaikā, samazināt pakotnes izmēru un veikt neatkarīgu ieviešanu mikro-frontendiem.
Moduļu federācija: Galīgais ceļvedis izpildlaika moduļu koplietošanai mikro-frontendos
Nepārtraukti mainīgajā tīmekļa izstrādes ainavā mēs esam pieredzējuši nozīmīgu arhitektūras maiņu. Mēs esam ceļojuši no monolītām arhitektūrām uz aizmugursistēmas mikropakalpojumiem, meklējot mērogojamību un komandu autonomiju. Tagad šī pati revolūcija pārveido arī priekšgalsistēmu (frontend). Mikro-frontendu ēra ir klāt, un tās pamatā ir spēcīga tehnoloģija, kas to visu padara praktisku: Moduļu federācija.
Mikro-frontendu galvenais izaicinājums vienmēr ir bijis viegli formulējams, bet grūti atrisināms: kā no vairākām, neatkarīgi ieviestām aplikācijām izveidot vienotu, saskaņotu lietotāja pieredzi, neradot lēnu, uzpūstu un nepārvaldāmu jucekli? Kā mēs varam koplietot kopīgu kodu, piemēram, komponenšu bibliotēkas vai ietvarus kā React, neradot versiju pārvaldības murgus vai nepiespiežot veikt saskaņotas izlaišanas?
Šī ir problēma, ko Moduļu federācija eleganti atrisina. Ieviesta Webpack 5, tā nav tikai vēl viena funkcija; tā ir paradigmas maiņa mūsu domāšanā par tīmekļa aplikāciju veidošanu un ieviešanu. Šis visaptverošais ceļvedis izpētīs Moduļu federācijas "kas, kāpēc un kā", koncentrējoties uz tās vispārveidojošāko spēju: izpildlaika moduļu koplietošanu.
Ātrs atgādinājums: Kas ir mikro-frontendi?
Pirms iedziļināties Moduļu federācijas mehānikā, vienosimies par to, ko mēs saprotam ar mikro-frontendiem. Iedomājieties lielu e-komercijas vietni. Monolītā pasaulē visa priekšgalsistēma — produktu meklēšana, produktu informācija, iepirkumu grozs un norēķināšanās — ir viena liela aplikācija. Izmaiņas norēķinu pogā varētu prasīt visas aplikācijas testēšanu un atkārtotu ieviešanu.
Mikro-frontendu arhitektūra sadala šo monolītu pa biznesa domēniem. Jums varētu būt:
- A Meklēšanas komanda, kas atbild par meklēšanas joslu un rezultātu lapu.
- A Produktu komanda, kas atbild par produktu detaļām un ieteikumiem.
- A Norēķinu komanda, kas atbild par iepirkumu grozu un maksājumu procesu.
Katra komanda var veidot, testēt un ieviest savu aplikācijas daļu neatkarīgi. Tas sniedz vairākas būtiskas priekšrocības:
- Autonomas komandas: Komandas var strādāt un izlaist atjauninājumus pēc sava grafika, paātrinot izstrādi.
- Neatkarīga ieviešana: Kļūda ieteikumu dzinējā nebloķē kritisku atjauninājumu maksājumu plūsmai.
- Tehnoloģiju elastība: Meklēšanas komanda varētu izmantot Vue.js, kamēr produktu komanda izmanto React, ļaujot komandām izvēlēties labāko rīku savam konkrētajam domēnam (lai gan tas prasa rūpīgu pārvaldību).
Tomēr šī pieeja rada arī savus izaicinājumus, galvenokārt saistībā ar koplietošanu un konsekvenci, kas mūs noved pie vecajiem paņēmieniem.
Vecie koda koplietošanas veidi (un kāpēc tie nav pietiekami labi)
Vēsturiski komandas ir izmēģinājušas vairākas metodes koda koplietošanai starp dažādām priekšgalsistēmas aplikācijām, katrai no tām ir būtiski trūkumi mikro-frontendu kontekstā.
NPM pakas
Visizplatītākā pieeja ir publicēt koplietotas komponentes vai utilītas kā versijotu NPM paku. Koplietota komponenšu bibliotēka ir klasisks piemērs.
- Problēma: Tā ir būvēšanas laika atkarība. Ja komanda A atjaunina koplietoto `Button` komponenti `my-ui-library` no versijas 1.1 uz 1.2, komanda B un komanda C nesaņems šo atjauninājumu, kamēr tās manuāli neatjauninās savu `package.json`, nepalaidīs `npm install` un neieviesīs visu savu mikro-frontendu no jauna. Tas rada ciešu sasaisti un mazina neatkarīgas ieviešanas jēgu. Tas arī noved pie tā, ka pārlūkprogrammā tiek ielādētas vairākas vienas un tās pašas komponentes versijas, uzpūšot gala pakotni.
Monorepos ar koplietotām darbvietām
Monorepos (izmantojot tādus rīkus kā Lerna vai Yarn/NPM workspaces) uztur visus mikro-frontendus vienā repozitorijā. Tas vienkāršo koplietoto paku pārvaldību.
- Problēma: Lai gan monorepos palīdz uzlabot izstrādātāju pieredzi, tie neatrisina galveno izpildlaika problēmu. Jūs joprojām paļaujaties uz būvēšanas laika atkarībām. Izmaiņas koplietotā bibliotēkā joprojām prasa visu to lietojošo aplikāciju pārbūvēšanu un atkārtotu ieviešanu, lai atspoguļotu izmaiņas.