Inhoudsopgave
-
React-toepassing migreren
- Migreren naar applicatie voor één spa
- Rootconfiguratie configureren
-
Hoekapplicatie migreren
React-toepassing migreren
Om een bestaande React te migreren toepassing Ik volgde deze documentatie van single-spa en ook U kunt een compleet werkende oplossing vinden in deze GitHub-repo.
Ik neem aan dat je al een bestaande React-applicatie hebt.
Migreren naar applicatie voor één spa
- In uw React-hoofdmaptoepassing installeert u single-spa en single-spa-react met behulp van
npm
ofyarn
npm i single-spa single-spa-react
// or with yarn
yarn add single-spa single-spa-react
- Maak een bestand en noem het root.app.js binnen de src map (u kunt elke gewenste naam kiezen)
touch src/root.app.js
in dit bestand zullen we de rootcomponent . maken , de React-component op het hoogste niveau die moet worden weergegeven. In ons geval is dit App Component binnen App.js
de code in root.app.js zou er zo uit moeten zien
aan het einde van dit punt hebben we nu een single-spa-toepassing die we kunnen registreren in onze root-config
Rootconfiguratie configureren
Laten we nu onze root-config . configureren , vervang de code in uw index.js bestand met onderstaande code
door dit te doen voeren we verschillende stappen uit, waarbij we de single-spa vertellen om uw React . te registreren applicatie met behulp van
registerApplication
en start de applicatie door de start()
. te bellen functie. Voordelen van migratie op deze manier
- We gebruiken dezelfde
react-script
. - We hoeven webpack niet te configureren helemaal opnieuw, aangezien we het huidige toegangspunt, src/index.js . aan het kapen zijn , dus het is niet nodig om
eject
onze Reageer applicatie en configureer het webpack . opnieuw .
U kunt de applicatie uitvoeren met dezelfde scripts npm start
.
Hoekapplicatie migreren
Een bestaande Angular . migreren applicatie Ik heb deze documentatie gevolgd van single-spa Ik neem aan dat je al een bestaande Angular . hebt sollicitatie.
in mijn geval gebruik ik Angulaire versie 10
- Voer de volgende opdracht uit in je hoofdmap
ng add single-spa-angular
Volgens single-spa
documentatie, zal dit commando:
en zal ook:
- Voeg single-spa toe als afhankelijkheid moet u het installeren, aangezien het niet standaard is geïnstalleerd, wordt het alleen toegevoegd aan uw package.json , u kunt het handmatig installeren
npm i single-spa
of in uw hoofdmap waar uw package.json
gelegen run
npm i
die je afhankelijkhedenboom ververst en elk ontbrekend pakket installeert.
- Genereer extra-webpack.config.js
- Update build optie binnen angular.json en gebruik @angular-builders/custom-webpack in plaats van @angular-devkit/build-angular je moet andere afhankelijkheden installeren door . uit te voeren
npm i @angular-builders/custom-webpack
npm i @types/[email protected] --saveDev
Extra stappen om de migratie te voltooien
Sommige van deze stappen zijn niet gedocumenteerd in de single-spa documentatie, en ik kwam erachter terwijl ik de applicatie migreerde
- Binnen
app.module.ts
bestand
import {APP_BASE_HREF} from '@angular/common';
en voeg dit object toe aan de providers
reeks
{provide: APP_BASE_HREF, useValue: '/'}
-
Binnen tsconfig.app.json , voeg
node
toe naar typen array"types": ["node"]
-
In package.json,
--deploy-url
vlag moet worden ingesteld op de host-URL. Zie dit Stack Overflow-antwoord om het openbare pad van het webpack correct in te stellen voor uw activa.
Het resultaat van deze migratie is een gecompileerd JS-bestand. Na het voltooien van de migratie kunt u de Angular-toepassing uitvoeren met deze opdracht
npm run serve:single-spa:angular-app
Die een dev-server start die uw js-bestand bedient, dat zich zal bevinden in http://localhost:4200/main.js
Conclusie
Wat is er tot nu toe gedaan:
- Een bestaande Reageren gemigreerd applicatie.
- Onze kernconfiguratie gemaakt bestand.
- Een bestaande Angular . gemigreerd applicatie.
Een volledig werkende oplossing is te vinden in deze Github-repo en zal dienovereenkomstig worden bijgewerkt met elk gepubliceerd deel.
In het volgende deel zullen we het hebben over het registreren van uw Angular applicatie in je root-configuratie bestand.