Skip to main content

Чим NGXS відрізняється від NgRx?

Ось просте порівняння: NGXS vs NgRx - дві бібліотеки для керування станом в Angular, але підхід у них різний.

1. Синтаксис

  • NgRx - функціональний стиль: createAction(), createReducer(), createEffect().
  • NGXS - об'єктно-орієнтований стиль: класи, декоратори @State(), @Action().

NgRx - як Redux з RxJS. NGXS - як Angular-класи з логікою всередині.

2. Робота зі станом

  • NgRx: Стан змінюється лише через чисті функції (reducers), усе суворо іммутабельно.
  • NGXS: Зміни відбуваються всередині методів з доступом до ctx.setState(). Можна писати код простіше й зрозуміліше, особливо новачку.

3. Actions

У NgRx actions - звичайні об'єкти, їх створюють через createAction(). У NGXS - це класи з static type. І викликаються як new Action().

4. Ефекти / побічні дії

NgRx: createEffect() + RxJS. Код реактивний і чіткіше відокремлений. NGXS: асинхронність можна робити прямо всередині методу @Action() (наприклад, async/await у методі).

5. Обсяг коду

NgRx вимагає більше файлів і шаблонів (actions, reducers, effects, selectors). NGXS - менше коду, більше логіки в одному місці (у класі стану).

6. Крива навчання

NgRx - складніше, вимагає розуміння RxJS. NGXS - легше для старту, ближче до звичайного Angular-коду.

Висновок:

NgRxNGXS
ПідхідФункціональний, ReduxКласовий, Angular-style
КодБагато шаблонів, сувороКоротко, просто
Оновлення stateЧерез reducer-функціїЧерез ctx.setState() у методі
Побічні ефектиЧерез createEffect + RxJSВсередині методів @Action, можна async/await
Кому підійдеСередній і великий проєкт, досвідчена командаШвидкий старт, простіше новачкам

Обидві бібліотеки роблять одне й те саме - керують станом, але різними шляхами.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.