typescript - Vad är state management i Angular? och varför ska jag använda det?
Jag är ny på Angular och den här frågan kan vara väldigt bred. Men jag är intresserad av att lära mig mer om användning av tillståndshantering. Nyligen implementerade ett av våra projekt tillståndshantering med hjälp av NGXS-biblioteket. Jag försöker dock förstå vilka fördelar det har gett applikationen.
Implementeringen är mycket djup och på hög nivå, det finns vissa åtgärder som bär applikationsdata (som anges av användaren) och lyssnare till dessa åtgärder som bearbetar förfrågan och skickar vidare till nästa steg enligt behov. Hur skiljer sig detta när det gäller applikationsanvändning eller prestanda etc. från en vanlig Angular-applikation? Jag är i början av att förstå tillståndshantering och därför känns det som att jag skriver så mycket kod som kanske inte är riktigt nödvändig. Exempel - bara för att navigera till en annan sida, var jag tvungen att implementera en tillståndsmodell för att hålla objektet och deklarera en åtgärd och en lyssnare för att implementera den åtgärden.
Jag går igenom flera dokumentationer och skaffar detaljer om hur tillståndshantering kan implementeras men får inte det rätta svaret på varför tillståndshantering borde implementeras.
Tack på förhand!
Svar #1
Först, för att svara på din fråga, bör du veta att State Management inte är en term från Angular, och du behöver inte använda det. State Management är en term som definierar ett sätt vi kan lagra data, ändra den och reagera på dess förändringar. I vårt fall använder biblioteken NGRX och NGXS ett mönster som kallas CQRS (Command Query Responsibility Segregation) princip, och jag citerar Wikipedia:
Det säger att varje metod antingen ska vara ett kommando som utför en handling, eller en förfrågan som returnerar data till anroparen, men inte båda.
State Management fungerar som en enda sanningskälla för din applikation.
Du kan bygga en app utan komplex State Management. Du kan bara använda tjänster, och du är redo att köra. Att lägga till ett State Management-bibliotek (t.ex. NGRX/NGXS) till din applikation skulle lägga till viss komplexitet och mallkod, men då får du fördelarna med (citerat från https://stackoverflow.com/a/8820998/1860540):
- Stort team - Du kan enkelt dela upp utvecklingsuppgifter mellan personer om du har valt CQRS-arkitektur. Dina toppresurser kan arbeta med domänlogik medan vanliga uppgifter kan lämnas till mindre erfarna utvecklare. 2. Svår affärslogik - CQRS tvingar dig att undvika att blanda domänlogik och infrastrukturoperationer. 3. Skalbarhet är viktigt - Med CQRS kan du uppnå utmärkt prestanda för läsning och skrivning, kommandohantering kan skalas ut på flera noder och eftersom frågor är skrivskyddade operationer kan de optimeras för snabba läsoperationer.
De mest populära Angulars State Management-biblioteken är NGRX och NGXS.
Jag kommer inte att gå in på NGRX, men kort sagt - det har visat sig fungera i riktiga produktionsapplikationer.
Men NGXS är ett yngre state management-bibliotek för Angular som antog några idéer från NGRX och "förstärkte" det genom att använda de verktyg som Angular tillhandahåller (såsom DI). Den största skillnaden mellan NGRX och NGXS är att din boilerplate är betydligt mindre i NGXS. Om du är intresserad kan du läsa huvudorsaken till varför ett annat state management för Angular.
Så för att sammanfatta - Om du planerar att bygga en storskalig applikation, då bör du överväga att använda State Management, även om - du inte behöver.
Svar #2
Ansvarsfriskrivning: Jag är författaren till biblioteket
ng-simple-state
Enkel tillståndshantering i Angular med endast tjänster och RxJS.
- Se stackblitz-demot.
- Se källkoden.
Du kan dela state mellan komponenter så enkelt som möjligt och dra nytta av de bra delarna av komponentstate och Angulurs beroendeinjektionssystem.