Je souhaite utiliser ngxs pour la gestion des états dans mon Angular 6 application.
Mais je ne sais pas s'il est mature pour les grands projets.
Je ne trouve aucun article sur la différence de performances entre ngrx et ngxs. Quelqu'un peut-il fournir des informations à ce sujet?
Mesures de performance: obtenir un grand nombre d'articles dans le magasin et les réécrire.
Voici une bonne réponse de Reddit (Angular2 + communauté) . Il s'agit d'un développeur qui a testé les deux et est passé à NGXS.
Je voudrais partager mon expérience. Nous avons une application pour moyennes et grandes entreprises. Nous avons commencé avec NGRX, mais il est rapidement devenu évident que
Le code NGRX est beaucoup plus difficile à comprendre et à écrire aux coéquipiers.
NGRX est l'enfer passe-partout. Vous y passez beaucoup de temps.
Le concept des "effets" est bon, mais il ajoute simplement des couches supplémentaires de complexité qui pourraient être simplifiées.
L'expérience développeur (DX) était horrible.
Ensuite, nous sommes passés à NGXS.
Il a un passe-partout minimum. Vous sautez à droite dans "l'action": D.
Nous avons été ravis de son DX.
C'est beaucoup plus facile à comprendre pour les coéquipiers et tout le monde était soudainement productif.
Il existe certains compromis comme les appels de serveur dans les réducteurs, mais il était logique de les utiliser après un certain temps.
PLUGINS! Il y a beaucoup de plugins de la journalisation à la gestion des formulaires (chose géniale jamais).
D'après ce que je vis, NGXS est beaucoup plus simple à écrire et il est plus facile de travailler avec des états chargés paresseux. Il a une syntaxe si simple, c'est OOP, au lieu de Redux FP paradigme. Décorez vos actions et sélecteurs, abonnez-vous aux états mémorisés, interceptez les actions envoyées n'importe où, etc.
Cependant, j'ai trouvé un écueil en ce qui concerne le plugin de stockage qui est essentiellement destiné aux premières applications hors ligne. Il utilise le stockage local de synchronisation qui a une limite de 5 Mo et bloquera l'interface utilisateur lorsqu'il doit écrire des données volumineuses dans le stockage. Cependant, vous pouvez écrire une solution de stockage personnalisée au-dessus du plugin. Il est évolutif, extensible, vous pouvez injecter les classes util en un clin d'œil, la documentation est aussi simple que possible.
J'ai récemment eu un problème avec NGRX, car je devais envoyer deux actions, mais la seconde dépendait du succès de la première, le problème était que les réducteurs s'exécutaient de manière asynchrone, et la deuxième action se terminait sans que la première ait terminé, essayez de le résoudre avec des effets, mais même là, la même chose s'est produite. Avec NGXS j'ai pu le résoudre puisque le Dispacher retourne un observable à la fin de l'action.
En général, NGXS a très bien fonctionné, et les performances sont très similaires, j'ai dû mettre à jour beaucoup de données dans une architecture avec plusieurs niveaux imbriqués, et il ne semble pas y avoir de différence dans le temps de mise à jour.