Microfrontends på min side
Kom i gang
Ta utgangspunkt i template for ssr microfrontend og opprett et nytt repository basert på denne templaten.
Konfigurer applikasjonen
- Bytt ut applikasjonsnavn i konfigurasjonsfiler
CMD + Shift + F og søk etter tms-microfrontend-template-ssr og erstatt dette med ditt applikasjonsnavn.
- Tilpass nais.yaml
Tilpass både nais/dev-gcp/nais.yaml og nais/prod-gcp/nais.yaml. Alle felter som må tilpasses har tilhørende kommentar med instruksjon i template.
- Tilpass innholdet i .github/workflows/deploy.yaml
Tilpass deploy.yaml slik kommentarene i koden instruerer. Applikasjonsnavn skal være likt navn på repository.
Du kan vente med å kommentere inn og tilpasse stegene update-manifest-prod og deploy prod til applikasjonen er klar for prodsetting.
- Etterspør tilganger
Be om tilgang til å oppdatere manifest og deploye applikasjonen til nais på slack kanalen #minside-microfrontends
- Deploy til produksjon
Når applikasjonen er klar for prodsetting, kan du kommentere inn update-manifest-prod og deploy-prod stegene i .github/workflows/deploy.yaml. Sørg for at de er fylt inn likt som i steg 3.
Bruk av template
Språk
Bruk språkoppsett satt opp i template og legg språkvariablene inn i /language/text.ts
Fallback
Microfrontenden bør du tilby en fallback - se src/pages/[locale]/fallback.astro
Produktanalyse
Vi bruker dekoratøren sin analyticsfunksjon - se src/pages/[locale]/index.astro
CSS
For lokal css kan du bruke css moduler som vanlig.
For bruk av designsystemet må medfølgende css isoleres til microfrontenden. Importer derfor kun de delene av ds-css som er i bruk. Aksel har laget et verktøy for dette som genererer listen med imports du trenger. Legg listen med imports i /styles/aksel.css.
CSS isolering er gjort via prefix av designsystemets klassenavn. For at dette skal fungere, må du beholde section taggen som wrapper hver page, hvor applikasjonsnavnet er brukt som klassenavn.
Client-side interaktivitet
Ved behov for client-side interaktivitet kan Astros Client Islands tas i bruk. Et eksempel ligger i /components/ClientIsland.tsx og oppfører seg som en vanlig React komponent.
Merk at interaktivitet er tilgjengeliggjort via React. Dette medfører at React major versjonen må samsvare i microfrontend og på Min side.
Template repoet er satt opp med client-side interaktivitet som default. Hvis microfrontenden ikke har behov for dette kan du fjerne hele integrations-steget i astro.config.mjs, samt react, react-dom og rollup-plugin-import-map fra package.json.
Design
Vi stiller visse designkrav til utformingen av microfrontends, for å sikre en helhetlig brukeropplevelse.
Astro
Repoet er skrevet om fra React til Astro. Se Astro sin offisielle dokumentasjon eller ta kontakt med oss i #minside-microfrontends for hjelp med overgangen.
Aktivere og deaktivere microfrontends
-
Koble til kafka topicet
Abonner på min-side-microfrontend-topicet. NOTE:microfrontendIdskal være identisk med navnet på Github-repoet du opprettet basert på templatet tidligere i guiden. Hvis du skriver om en gammel microfrontend til ssr så skal du beholde sammemicrofrontendId. -
Send meldinger
Du kan nå sende oss Enable/Disable meldinger via Kafka for å skru aktivere/deaktivere microfrontenden for spesifikke brukere.
Meldingsformat
// Enable
{
"@action": "enable",
"ident": <ident for bruker: fnr/dnr>,
"microfrontend_id": <microfrontendId>,
"sensitivitet": <nivå som kreves for å se innholdet i microfrontenden, gyldige verdier: substantial og high>,
"@initiated_by": <ditt-team>
}
// Disable
{
"@action": "disable",
"ident": <ident for bruker: fnr/dnr>,
"microfrontend_id": <microfrontendId>,
"@initiated_by":<ditt-team>
}
Tips Et meldingsbygger-bibliotek finnes på Github packages
Hva er sensitivitet?
sensitivitet samsvarer med ID-portens ACR-verdier.
| Verdi | Når brukes den? |
|---|---|
high |
Innhold krever innlogging med idporten-loa-high. |
substantial |
Innhold kan vises uavhengig av innloggingsnivå. |
Hvis feltet utelates, antar systemet high. Logger brukeren inn med idporten-loa-substantial og det finnes microfrontends som krever idporten-loa-high, får brukeren tilbud om «step-up»-innlogging. Se også NAIS-dokumentasjonen om security levels.
Lurer du på noe?
Dersom du har spørsmål, kan disse stilles i #minside-microfrontends kanalen på slack.