
U svetu Angular razvoja postoji mit koji se stalno ponavlja: "Ako je u pitanju Enterprise aplikacija, neophodan ti je globalni store." Svi smo to videli-stotine fajlova punih boilerplate koda, akcije za najobičnije inpute u formama i selektori koji ne rade ništa osim što čitaju jedan jedini property.
Ali surova istina je sledeća: Svaka linija koda koju niste morali da napišete je dug koji nećete morati da otplaćujete.
Porez na "Boilerplate"
Kada prerano uskočimo u NgRx (ili slične biblioteke zasnovane na Redux šablonu), plaćamo ogroman "porez na boilerplate". Za jednu običnu funkcionalnost, odjednom vam je potrebno:
- Akcija da pokrene poziv.
- Effect da obradi API.
- Još dve Akcije za Success/Failure.
- Reducer da ažurira stanje.
- Selektor da to isto stanje pročita.
Dok sve ovo povežete, izmenili ste pet fajlova samo da biste prikazali listu korisnika. Ova fragmentacija čini kod težim za praćenje, težim za refaktorisanje i značajno usporava uvođenje novih developera u projekat.
Signali: Promena pravila igre
Dolaskom Angular Signala, argumenti za globalni state management su dodatno oslabili. Signali pružaju preciznu (fine-grained) reaktivnost koja je:
- Sinhrona: Nema više "race condition" problema sa async pajpovima.
- Lokalna po definiciji: Stanje treba da živi tamo gde se koristi.
- Performantna: Osvežava change detection samo tamo gde je neophodno, što nam pomaže da lakše stignemo do onih 100/100 Lighthouse rezultata.
Kada VAM JE ZAISTA potreban NgRx?
Nije problem u tome što je NgRx loš, već u tome što se prečesto koristi. On vam je zaista potreban samo kada:
- Iste podatke koriste i menjaju višestruki, nepovezani delovi aplikacije.
- Vam je potrebna kompleksna undo/redo funkcionalnost.
- Imate strimove podataka visoke frekvencije koji zahtevaju centralizovanu obradu.
Zaključak
Prestanite da pravite lavirinte od akcija, reducera i selektora za obične CRUD operacije. Koristite Signale za lokalno stanje, Servise za deljenu logiku, a tešku artiljeriju čuvajte za onih 5% aplikacije koji je zapravo zahtevaju.
Vaše buduće "ja" (i vaša veličina bundle-a) će vam biti zahvalni.