Salut. Lucrez cu Angular de 3 ani, dar de 2 luni am inceput sa folosesc Ngrx/Store, dupa ce am terminat un curs la o companie. In ultimele 3 zile am zis sa testez noile cunostinte si am creat un proiect nou, in care sa implementez NgRx pentru partea de autentificare (login, register, forgot-password). De acolo m-am intins putin si am extins si cu un user-profile pentru a avea un minim de rutare (urmeaza refactorizare cu 2 store-uri separate, AuthStore si UserStore). Pentru cine vrea sa arunce o privire: Github.
actiuni, reduceri, selectori, efecte, servicii. Toate cele 5 componente fac parte din ciclul unui store. Dezvoltarea este foarte lenta, liniile de cod se multiplica de vreo 5 ori. Debug si testare, nici nu-mi pot imagina (inca) cum se fac.
Pentru cele cateva actiuni ce fac parte din auth (login, register, logout, forgot-password, get-me, update-user, update-password) folosind NgRx am scris asa:
actions - 200 linii cod
effects - 260 linii cod
reducer - 340 linii cod
selectors - 8 linii cod
total: ~ 800 linii cod doar partea de autentificare si user profile. Cateva ore bune pierdute in plus pentru asta.
Pe langa liniile de cod, mai sunt si librariile de importat in proiect, ngrx/store, effects, entity.
nota: partea de Entity si selectorii nu cred ca au cea mai corecta implementare, dar nu asta e subiectul.
In trecut am lucrat la un erp in care store-ul era format din servicii si Observabile/Subjecturi, mult mai putin cod scris, mult mai clar, mult mai usor de intretinut, simplu. Componentele se inregistreaza la actiunile din store, iar cand una emite, celelalte asculta.
Nu cred ca exista un anume tip de aplicatie (mica/mare) pentru care sa se foloseasca sau nu NgRx, si pentru asta am gasit un articol care se potriveste fix cu parerea mea.
Daca, chiar este nevoie de salvarea state-ului aplicatiei, cred ca se poate face mult mai usor cu Observabile, iar NgRx-ul este doar un trend pentru ca in descrierea jobului apare tot mai des cerinta de a stii sa lucrezi cu aceasta librarie. O alta impresie a mea… e faptul ca moda asta vine mai mult din React, unde nu cred ca exista proiect fara Redux.
ps: categoria de frontend/js ar putea avea si subcategorii pentru cele mai folosite frameworkuri. cred ca ar rasari mai multe discutii pe tema asta