Що таке Akita?
Akita - це бібліотека для керування станом в Angular, альтернатива NgRx і NGXS, але з акцентом на простоту, структуру й об'єктно-орієнтований підхід.
Головне:
Akita = реактивний стан + класи + менше шаблонного коду.
Вона допомагає:
- зберігати дані (у store),
- оновлювати їх централізовано (через методи),
- підписуватися на зміни (через
select()).
Основні елементи Akita:
- Store
- клас, де живе стан
- ти задаєш початковий стан і керуєш ним
- Query
- клас для читання даних зі store
- зручно брати
selectName(),selectCount()тощо
- Service
- бізнес-логіка: завантаження з API, оновлення, видалення тощо
- викликає методи store
Приклад:
ts
export interface Todo {
id: number;
title: string;
}
@StoreConfig({ name: 'todos' })
@Injectable()
export class TodosStore extends Store<Todo[]> {
constructor() {
super([]);
}
}ts
@Injectable()
export class TodosQuery extends Query<Todo[]> {
todos$ = this.select(); // підписка на всі todos
constructor(protected store: TodosStore) {
super(store);
}
}ts
@Injectable()
export class TodosService {
constructor(private todosStore: TodosStore) {}
add(todo: Todo) {
this.todosStore.update(state => [...state, todo]);
}
}Чим відрізняється від NgRx:
| Akita | NgRx | |
|---|---|---|
| Підхід | Класовий, простий | Функціональний, строгий |
| Reducers | Немає | Обов'язкові |
| Actions | Не обов'язкові | Обов'язкові |
| RxJS | Використовується, але легко | Використовується багато |
| Побічні ефекти | У сервісах | Через Effects |
Висновок:
Akita - це легка, зрозуміла альтернатива NgRx. Якщо хочеться керувати станом без зайвої складності, з гарною структурою, Akita може підійти ідеально.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.