Isäntä- ja etäisten React-sovellusten määrittäminen
Määritä expose-kohteet, remote-kohteet ja jaetut riippuvuudet webpack.config.js-tiedostossa isäntäkuorelle ja kahdelle React-etäsovellukselle.
Isäntä- ja etäisten React-sovellusten määrittäminen on ilmainen React Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu React Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. React Academy-kurssilla on yhteensä 4 oppituntia.
Remoten webpack.config.js: ModuleFederationPlugin
Remote-sovellus lisää ModuleFederationPluginin webpack-määritykseensä ja määrittää kolme keskeistä ominaisuutta: name (yksilöivä tunniste, esimerkiksi "buttonApp"), filename ("remoteEntry.js" — manifestin tulostiedosto) ja exposes (julkisesta nimestä lähdetiedostopolkuun muodostuva kartta).
Komponenttien tarjoaminen remotesta
exposes-määritys yhdistää julkisen moduulipolun paikalliseen tiedostoon: { './Button': './src/Button' }. Tämä tarkoittaa, että host voi tuoda moduulin 'buttonApp/Button' ja saada komponentin tiedostosta ./src/Button.tsx. Voitte tarjota useita komponentteja, apuohjelmia tai jopa kokonaisia sivuja.
Remoten jaettu määritys
shared-ominaisuus kertoo Module Federationille, mitkä moduulit jaetaan hostin ja remoten kesken sen sijaan, että ne monistettaisiin. Reactille käytetään määritystä shared: { react: { singleton: true, requiredVersion: deps.react }, 'react-dom': { singleton: true } }. singleton:true estää useita instansseja latautumasta samanaikaisesti.
Hostin webpack.config.js: remoteihin viittaaminen
Host-sovelluksen ModuleFederationPlugin-määritys sisältää remotes-ominaisuuden: { buttonApp: 'buttonApp@http://localhost:3001/remoteEntry.js' }. Avain on import-nimiavaruus, ja arvo yhdistää remoten nimen ja URL-osoitteen @-merkillä — näin Webpack tietää, mistä remote noudetaan ajonaikana.
Remoten käyttäminen Reactissa
Hostin React-koodissa remote-komponentti tuodaan dynaamisella importilla: const Button = React.lazy(() => import('buttonApp/Button')). Import-polku vastaa remoten nimiavaruutta ja exposattua moduulinimeä. React.lazy mahdollistaa importin koodin pilkkomisen ja lataa sen asynkronisesti.
Suspenseen kääriminen
Koska remote-moduulit ladataan asynkronisesti, käärikää lazy-importattu remote-komponentti aina Suspense-rajauksen sisään: Suspense fallback=Loading... /. Fallback näytetään, kun Module Federation noutaa remoteEntry.js-tiedoston ja komponentin chunkin remoten URL-osoitteesta.
Miksi singletonit ovat kriittisiä
Reactin hookit (useState, useContext, useEffect) tarvitsevat yhden sisäisen React-instanssin komponentin tilan seuraamiseen. Jos sekä host että remote lataavat oman React-kopionsa, hookit aiheuttavat "invalid hook call" -virheitä. singleton:true pakottaa ne käyttämään samaa React-instanssia ja ratkaisee tämän virheluokan kokonaan.
Versioristiriitojen ratkaiseminen
Kun host käyttää react@18.2.0 ja remote käyttää react@18.3.0, Module Federationin shared scope neuvottelee käytettävästä versiosta. singleton:true- ja requiredVersion-asetuksilla se käyttää yleensä suurempaa versiota, jos se on yhteensopiva. Asetus requiredVersion: '>=18.0.0' kiinteän version sijaan mahdollistaa joustavat versioalueet.
TypeScript: moduulimääritykset
TypeScript ei tunne remote-moduuleja käännösaikana, joten importit kuten import('buttonApp/Button') aiheuttavat tyyppivirheitä ilman määrityksiä. Käyttäkää @module-federation/typescript-pakettia tai luokaa manuaalisesti .d.ts-tiedostoja, jotka ilmoittavat moduulien tyypit. Näin saatte tyyppiturvallisuuden remote-komponenttien propseille.
Määrityksen testaaminen paikallisesti
Käynnistäkää molemmat sovellukset samanaikaisesti: remote portissa 3001 ja host portissa 3000. Avatkaa host — sen Module Federation -runtime noutaa osoitteesta http://localhost:3001/remoteEntry.js Button-moduulin, lataa sen chunkin ja renderöi sen host-sovelluksessa aivan kuin kyseessä olisi paikallinen komponentti.
Tuotannon URL-määritys
Korvatkaa tuotannossa localhost:3001 käyttöönotetun remoten URL-osoitteella. Yleinen käytäntö on käyttää ympäristömuuttujaa remoten URL-osoitteelle, jotta CI/CD voi välittää oikean URL-osoitteen kuhunkin ympäristöön: buttonApp: 'buttonApp@' + process.env.BUTTON_REMOTE_URL + '/remoteEntry.js'.
Jaetut singleton-moduulit
Miksi React on määritettävä singletoniksi Module Federationin shared-määrityksessä?
Oppitunnin yhteenveto
Module Federationin määrittäminen edellyttää ModuleFederationPluginia sekä remotessa (name, filename, exposes) että hostissa (remotes). Käyttäkää remote-komponentteja React.lazy + dynamic import -yhdistelmällä ja käärikää ne Suspenseen. React ja React DOM on jaettava singleton-moduuleina, jotta usean instanssin hook-virheet vältetään. TypeScript-määritykset ja ympäristömuuttujista saatavat remoten URL-osoitteet täydentävät tuotantovalmiin määrityksen.
Opi React tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 88
- Oppitunnit
- 324
Usein kysytyt kysymykset
Onko oppitunti ”Isäntä- ja etäisten React-sovellusten määrittäminen” ilmainen?
Kyllä – oppitunnin ”Isäntä- ja etäisten React-sovellusten määrittäminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko React Academy-kurssin, päivitä CoddyKit PROhon. React Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Isäntä- ja etäisten React-sovellusten määrittäminen”?
Määritä expose-kohteet, remote-kohteet ja jaetut riippuvuudet webpack.config.js-tiedostossa isäntäkuorelle ja kahdelle React-etäsovellukselle. Harjoittelet React Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni React Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin React Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Isäntä- ja etäisten React-sovellusten määrittäminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä React Academy-oppitunnilla?
Kyllä. Jokainen React Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Module Federation: dynaamiset ajonaikaiset tuonnit
- Isäntä- ja etäisten React-sovellusten määrittäminen
- Tilan ja reitityksen jakaminen remote-sovellusten välillä
- Versiointi, käyttöönotto ja orkestrointi