Устоявшийся в DDD (domain-driven design) паттерн
Смысл его в разделении логики работы с данными на часть, которая просто запрашивает данные (
Query:
- Не изменяет состояние системы. Никаких сайд эффектов
- Контекст запроса хранит нужные для её выполнения данные (пейджинг, фильтры и т.п.)
- Возвращает результат
Command:
- Изменяет состояние системы
- Ничего не возвращает
- Хорошо описывает предметную область, как действия пользователей над системой
- Контекст команды хранит нужные для её выполнения данные
Например, пользователь при регистрации вводит email, его надо валидировать и сохранить. В случае следования
В аспекте Vue.js
#architecture #ddd
CQRS (Command and Query Responsibility Segregation) или CQS (Command and Query Segregation) - разделение команд и запросов - может сделать программу более понятной и поддерживаемой.Смысл его в разделении логики работы с данными на часть, которая просто запрашивает данные (
query), и часть, которая их изменяет (command).Query:
- Не изменяет состояние системы. Никаких сайд эффектов
- Контекст запроса хранит нужные для её выполнения данные (пейджинг, фильтры и т.п.)
- Возвращает результат
Command:
- Изменяет состояние системы
- Ничего не возвращает
- Хорошо описывает предметную область, как действия пользователей над системой
- Контекст команды хранит нужные для её выполнения данные
Например, пользователь при регистрации вводит email, его надо валидировать и сохранить. В случае следования
CQS необходимо разделить логику на две части (сделать две функции) - валидация (проверка корректности и наличия такого email уже в базе данных) и сохранение.В аспекте Vue.js
computed работает как реактивный query, watch - реактивный command#architecture #ddd