Table of Contents[Hide][Show]
- Yog li, dab tsi yog lub koom haum module?
- Vim li cas Module Federation?
- Module federation core Cheebtsam
Module Federation tseem ceeb nta+-
- Kev ua tau zoo ntawm lub vev xaib
- Kev loj hlob zoo
- Muaj peev xwm kho tus kheej thiab rov ua dua
- Siv tau zoo ntawm cov kev vam meej
- Hloov chaw yuav tsum rov xa cov neeg siv khoom, xa cov cai ywj pheej.
- Thaum khiav, import code los ntawm lwm yam tsim.
- Txhim kho tus tsim tawm kev paub thaum khaws cia cov neeg siv khoom
- Micro-frontends ua haujlwm hauv monolithic zam.
- xaus
Lub tswv yim ntawm micro frontends siv microservices rau kev txhim kho frontend.
Lub tswv yim yog rhuav tshem daim ntawv thov lossis lub vev xaib mus rau hauv me me, ntawm nws tus kheej tsim cov khoom uas txuas nrog thaum lub sijhawm ua haujlwm, tsis yog los tsim lawv ua ib qho, cohesive monolith.
Cov txheej txheem tso cai rau koj los tsim lwm yam khoom ntawm daim ntawv thov siv lwm cov thev naus laus zis thiab nrog pab pawg ywj pheej.
Lub tswv yim yog los txo cov nqi kho mob ntsig txog ib txwm monolith los ntawm segmenting txoj kev loj hlob hauv txoj kev no.
Los ntawm kev tso cai rau lawv tsom mus rau thaj chaw tshwj xeeb ntawm daim ntawv thov ua pab pawg sib koom ua ke, nws kuj ua rau cov ntaub ntawv tshiab ntawm kev koom tes ntawm backend thiab frontend devs ua tau.
Piv txwv li, koj yuav muaj ib pab neeg uas tsuas yog lub luag haujlwm rau kev tshawb nrhiav lossis lwm yam ntawm cov khoom tseem ceeb uas tseem ceeb rau kev lag luam.
Ua tsaug rau lub koom haum module, koj muaj peev xwm ua haujlwm txaus los lis cov haujlwm ua haujlwm uas tus micro frontend mus kom ze rau txoj cai.
Cov ntawv tshaj tawm no yuav ua tib zoo saib ntawm cov architecture ntawm lub koomhaum module, nrog rau nws cov yam ntxwv tseem ceeb thiab cov qauv siv.
Yog li, dab tsi yog a module federation?
Javascript's module federation tsim ua rau siv cov khoom siv rov ua dua hauv ntau daim ntawv thov.
Nws yog ib qho yooj yim jargon, tab sis kuv tsuas yog ua kom nws zoo li txoj hauv kev kom pom breezy.
Raws li peb txhua tus paub txog kev sib koom ua ke hauv React daim ntawv thov, Module Federation ua tiav tib lub hom phiaj hauv kev xyaum, tshwj tsis yog tias nws nthuav tawm cov ntawv thov rau kev siv los ntawm lwm cov ntawv thov.
Module Federation nrhiav kom kov yeej qhov teeb meem ntawm kev sib koom module hauv ib qho kev faib tawm los ntawm kev xa cov ntsiab lus tseem ceeb xws li macro lossis micro raws li qhov xav tau.
Qhov no ua tiav los ntawm kev kom lawv tshem tawm ntawm koj cov apps thiab kev tsim ua haujlwm.
Vim li cas Module Federation?
Nov yog qee yam uas module federation tuaj yeem ua tau yooj yim:
- Sab nraud thiab DLLs (Dynamic Link Libraries) yog txhua yam peb qee zaum muaj rau kev sib koom ua haujlwm ntawm cov apps. Tag nrho cov no ua rau kev sib faib code sib koom nyuaj heev.
- NPM yog sluggish.
- Thaum ob qhov kev zov me nyuam sib faib cov lej tseem ceeb, lawv yuav tsum muaj zog thiab hloov tau.
Txhawm rau kom cov apps nyob ib leeg kom tag nrho hauv lawv lub chaw cia khoom, faib cais, thiab ua haujlwm raws li lawv tus kheej SPA ywj pheej, Module Federation tau tsim.
Module federation core Cheebtsam
Ua ntej dhia dej tob, luv luv sib tham txog ob peb lub tswv yim tshiab uas lub koom haum module coj yog qhov tseem ceeb.
- Lub party: Thaum nplooj ntawv thauj khoom, qhov tsim lossis module pib pib yog hu ua tus tswv. Tus kws kho mob tuaj yeem xav tias yog tus tswv tsev.
- Chaw Taws Teeb: Ib qho chaw taws teeb yog ib qho kev tsim sib txawv uas siv ib feem ntawm tus tswv tsev. Lawv kuj raug hu ua cov neeg siv khoom.
- Tus tswv tsev Bi-directional: lub Webpack tsim uas ua haujlwm raws li ob qho tib si chaw taws teeb uas lwm tus tswv siv thiab tus tswv tsev uas siv cov chaw taws teeb.
- Vendor federation: enables declaratively runtime sib koom ntawm npm module dependencies rau ib tug tswv tsev los yog tej thaj chaw deb, tsis hais qhov chaw ntawm qhov chaw uas lawv yog loaded. Ib qho ntawm cov teeb meem kev ua tau zoo nrog micro frontends raug daws raws li qhov no.
Cov qauv ntawm Tsoom Fwv Teb Chaws Daim Ntawv Thov
Evergreen Design System
Ib qho ntawm cov ntaub ntawv tseem ceeb tshaj plaws ntawm tsoomfwv cov ntawv thov yog "cov chaw taws teeb ntsuab," uas yog cov chaw taws teeb sib koom xws li "Design System" lossis "Component library" uas yog tus kheej faib thiab hloov kho rau txhua tus neeg siv.
Yog tsis muaj txhua pab pawg app yuav tsum tau siv sijhawm los hloov kho, qhov no yuav pab tau kom ntseeg tau tias txhua lub vev xaib online ua raws li cov neeg koom tes tam sim no.
Txhawm rau tsim thiab muab tso rau hauv qhov kev txwv thiab cov txheej txheem tsim nyog los lav kev ruaj ntseg, kev hloov tshiab tsis tu ncua, qhov no yuav yog qhov chaw muaj txiaj ntsig zoo rau cov lag luam pib thaum xav txog kev tsim cov ntawv thov hauv tsoomfwv.
Hauv qab no yog qee qhov kev siv-qhov uas nws tus kheej xa tawm cov chaw taws teeb sib koom yuav yog qhov tsim nyog:
- Cov qauv tsim
- Daim ntawv thov plhaub
- Cov tsev qiv ntawv suav
- Cov neeg tau txais kev pab
- Cov cuab yeej sib koom
- Lwm txoj kev faib qauv rau widgets siv los ntawm sab hauv lossis sab nraud
Multi-SPA Module Sib Koom
Rov qab siv cov yam ntxwv uas twb tau xa tawm lawm, xws li cov khoom siv, hauv cov apps sib txawv ntawm ib nplooj ntawv. Cov txiaj ntsig muaj xws li:
- Cov neeg siv khoom tau txais kev hloov kho tshiab
- Domain kev txawj ntse tseem nyob ntawm pab pawg uas yog tus saib xyuas nws.
- Streamlines tus txheej txheem xa mus vim hais tias cais module tso tawm tsis tsim nyog.
Plhaub tsav federation
Lub koom haum plhaub-driven muaj xws li:
- Thaum tsim cov khoom lag luam tshiab, pab pawg Cov Khoom tsis tos rau pab pawg Checkout kom ua tiav lawv txoj haujlwm.
- Thaum hloov cov chaw taws teeb, tsis muaj nplooj ntawv rov qab.
- Thaum tsim nyog, Plhaub muab cov chaw thau khoom qeeb thiab (sab saum toj-theem) routing.
- Routing hla cov chaw taws teeb yog ua tau los ntawm cov neeg muag khoom koom haum, uas ua rau rov siv tau cov pob khoom siv npm nquag.
- Plhaub muab lub moj khaum thiab lwm yam kev vam khom uas tau rov qab siv los ntawm cov tub nkeeg thauj khoom remotes.
Multi-plhaub federation
Zoo ib yam li lub plhaub-tsav lub koom haum tau piav qhia saum toj no, tab sis siv cov plhaub sib txawv.
Nws muaj:
- ntau lub plhaub
- Dawb-labeling
- Tsis yog txhua qhov chaw taws teeb xav tau los ntawm Shell B lossis muaj kev ua haujlwm ywj pheej.
Module Federation tseem ceeb nta
Kev ua tau zoo ntawm lub vev xaib
Qhov teeb meem nrog NPM module muaj pes tsawg leeg yog tias raws li tus naj npawb ntawm cov neeg nyob hauv nce, daim ntawv thov qhov loj me feem ntau loj tuaj.
Txhawm rau kom tsis txhob thauj cov pob khoom thaum koj daim ntawv thov thauj khoom thiab tsuas yog thauj lawv thaum tsim nyog, Module Federation muab koj lub peev xwm los lazily thauj khoom.
Qhov no tiv thaiv qhov yuav tsum tau mus download tau modules ua ntej lawv yuav tsum tau tiag tiag, uas txhim kho qhov chaw ceev.
Kev loj hlob zoo
Txhua qhov project tuaj yeem tsim thiab xa tawm hauv kev sib cais thiab tuaj yeem ua tau los ntawm ntau pab pawg vim Module Federation txhawb kom koj npaj koj daim ntawv thov rau hauv cov haujlwm tsis sib xws kom koj tuaj yeem tsim thiab siv lawv cais (thiab li no nyob rau hauv parallel).
Muaj peev xwm kho tus kheej thiab rov ua dua
Kev sib koom ua ke tso cai rau Module Federation kom taug qab txhua yam ntawm koj txoj haujlwm kev vam khom nyob rau hauv ib qho chaw.
Txoj kev no, txawm tias thaum daim ntawv thov tsis tshaj tawm kev vam khom lossis thaum muaj teeb meem hauv network, nws tseem paub tias nws xav tau dab tsi thiab tuaj yeem ua haujlwm rub tawm raws li xav tau.
Siv tau zoo ntawm cov kev vam meej
Tsis tas li ntawd, Module Federation muaj kev tswj hwm kev vam meej, daws cov neeg muag khoom thiab cov neeg sab nrauv kom zoo kom koj daim ntawv thov yuav tsis thauj ntau dua ib lub tsev qiv ntawv.
Hloov chaw yuav tsum rov xa cov neeg siv khoom, xa cov cai ywj pheej.
Tus tsim tawm yog txaus siab rau kev muaj peev xwm ua haujlwm tau zoo. Thaum pom cov kev ua haujlwm ntawm kev ua haujlwm tau hloov pauv, nws yuav tsis tsim nyog rau rov nruab cov neeg siv khoom ntxiv lawm.
Kuv yuav tsum lees tias qhov no yog qhov muaj zog heev hauv thiab ntawm nws tus kheej, ib qho uas yuav xav tau kev kuaj xyuas kom zoo los tiv thaiv cov txiaj ntsig tsis tau xav txog.
Thaum khiav, import code los ntawm lwm yam tsim.
Thaum txais yuav tus qauv NPM pob, peb yuav xav txog cov apps uas siv Module Federation zoo ib yam li APIs es tsis yog sib koom cov cai thiab xav txog "qib qiv."
Ib yam uas lawv tuaj yeem tau txais kev ua haujlwm los ntawm lwm cov apps, cov ntawv thov hauv web tam sim no tuaj yeem muab cov haujlwm ua haujlwm rau lwm daim ntawv thov.
Txhim kho tus tsim tawm kev paub thaum khaws cia cov neeg siv khoom
tej JavaScript developer yuav zoo siab heev nrog Module Federation vim nws yog Webpack plugin uas siv tau raws li Webpack version 5.
Qhov no yeej yog qhov muaj zog thiab txaus nyiam yog tias peb muab qee qhov kev xav.
Los ntawm kev siv tus neeg thib peb Webpack loaders, xav txog tag nrho cov khoom uas webpack bundles, suav nrog cov ntawv sau, cov khoom muaj nqis, cov qauv, cov duab, kos duab, thiab lwm yam.
Los ntawm kev siv Module Federation, tag nrho cov no tuaj yeem sib koom thiab koom nrog.
Micro-frontends ua haujlwm hauv monolithic zam.
Nws yooj yim heev los ntxiv kev sib koom ua haujlwm rau koj daim ntawv thov; cia li import lub nras li qub los yog siv synchronous loading.
Xwb, asynchronous loading tuaj yeem siv los tsuas yog thauj khoom raws li qhov tsim nyog los ntawm kev siv tub nkeeg thauj khoom.
xaus
Hauv tsab xov xwm no, peb tau tham txog Module Federation ua qhov kev xaiv zoo heev rau kev tsim koj daim ntawv thov micro-frontend.
Cia cov apps sib pauv thiab haus cov haujlwm ua haujlwm ntawm lub sijhawm ua haujlwm txhawb kom muaj peev xwm los ntawm kev ua kom ntau pab pawg ua haujlwm ntawm cov ntawv thov ywj pheej.
Thaum cov kev hloov pauv hloov pauv, koj yuav tsis tas yuav tsim thiab xa koj cov neeg siv khoom vim nws txhawb kev ua haujlwm tsis zoo.
Koj qhov program yuav ua haujlwm zoo li lub monolith tom qab nws tau teeb tsa, uas yog qhov zoo heev.
Shareable dependencies yog siv los txo qhov loj ntawm apps. Txij li thaum muaj ntau tus neeg tsim khoom twb paub txog Webpack ib puag ncig, qhov kev tsim tawm tau zoo heev.
Sau ntawv cia Ncua