typescript - Hva er tilstandsstyring i Angular? og hvorfor bør jeg bruke det?


Jeg er ny innen Angular, og dette spørsmålet kan være veldig bredt. Men jeg er interessert i å lære mer om bruk av tilstandsadministrasjon. Nylig implementerte ett av våre prosjekter tilstandsadministrasjon ved hjelp av NGXS-biblioteket. Jeg prøver imidlertid å forstå hvilke fordeler det har gitt applikasjonen.

Implementeringen er veldig dyp og på høyt nivå, det finnes noen handlinger som bærer applikasjonsdata (som satt av brukeren) og lyttere til disse handlingene som behandler forespørselen og sender den videre til neste steg etter behov. Hvordan dette skiller seg når det gjelder applikasjonsbruk eller ytelse osv., fra en vanlig Angular-applikasjon. Jeg er på begynnerstadiet av å forstå tilstandsadministrasjon, og derfor føles det som om jeg skriver så mye kode som kanskje ikke egentlig er nødvendig. For eksempel - bare for å rute til en annen side, måtte jeg implementere en tilstandsmodell for å holde objektet og erklære en handling og en lytter for å implementere den handlingen.

Jeg går gjennom flere dokumentasjoner og får detaljer om hvordan tilstandsadministrasjon kan implementeres, men får ikke det riktige svaret på hvorfor tilstandsadministrasjon bør implementeres.

Takk på forhånd!

Svar #1

Først, for å svare på spørsmålet ditt, bør du vite at State Management ikke er et begrep i Angular, og du trenger ikke å bruke det. State Management er et begrep som definerer en måte vi kan lagre data på, endre det, og reagere på endringene. I vårt tilfelle bruker bibliotekene NGRX og NGXS et mønster kalt CQRS (Command Query Responsibility Segregation)-prinsippet, og jeg siterer Wikipedia:

Det sier at hver metode enten skal være en kommando som utfører en handling, eller en forespørsel som returnerer data til anroperen, men ikke begge deler.

State Management fungerer som en enkelt kilde til sannhet for applikasjonen din.

Du kan bygge en app uten kompleks tilstandsbehandling. Du kan bruke kun tjenester, og du er klar til å gå. Å legge til et bibliotek for tilstandsbehandling (f.eks. NGRX/NGXS) i applikasjonen din vil legge til litt kompleksitet og boilerplate, men da vil du ha fordelene av (sitert fra https://stackoverflow.com/a/8820998/1860540):

  1. Stort team - Du kan enkelt dele utviklingsoppgaver mellom personer hvis du har valgt CQRS-arkitektur. Dine beste folk kan jobbe med domenelogikk og la vanlige oppgaver være for mindre erfarne utviklere. 2. Vanskelig forretningslogikk - CQRS tvinger deg til å unngå å blande domenelogikk og infrastrukturelle operasjoner. 3. Skalerbarhet er viktig - Med CQRS kan du oppnå god lese- og skriveytelse, kommandohåndtering kan skaleres ut på flere noder, og siden spørringer er skrivebeskyttede operasjoner, kan de optimaliseres for raske leseoperasjoner.

De mest populære Angulars tilstandshåndteringsbibliotekene er NGRX og NGXS.

Jeg vil ikke utdype om NGRX, men kort sagt - det har bevist seg i reelle produksjonsapplikasjoner.

Imidlertid er NGXS et nyere bibliotek for tilstandshåndtering for Angular som har adoptert noen ideer fra NGRX og "styrket" det ved å bruke verktøyene som Angular tilbyr (som DI). Hovedforskjellen mellom NGRX og NGXS er at mengden standardkode er betydelig mindre i NGXS. Hvis du er interessert, kan du lese hovedårsaken til hvorfor et annet system for tilstandshåndtering for Angular.

Så for å oppsummere - hvis du planlegger å bygge en storapplikasjon, bør du vurdere å bruke tilstandsadministrasjon, selv om du ikke må.

Svar #2

Ansvarsfraskrivelse: Jeg er forfatteren av biblioteket

ng-enkel-tilstand

Enkel tilstandsadministrasjon i Angular med bare tjenester og RxJS.

  • Se stackblitz-demoen.
  • Se kildekoden.

Du kan dele tilstand mellom komponenter så enkelt som mulig og utnytte de gode sidene ved komponenttilstand og Angulars avhengighetsinjeksjonssystem.

Relaterte artikler