Если вы рассматриваете DOM как View
, компонентов / VirtualDOM как ViewModel
, store как Model
, ну, это Imo MVVM
. Поэтому я думаю, что вы не ошиблись. Фактически, в моем проекте я называю свои глобальные хранилища MobX как Store
, а мои локальные хранилища MobX (которые работают для определенных компонентов) как Model
. (Если есть более подходящая практика именования, пожалуйста, скажите мне)
В то же время, шаблон управления состоянием сильно отличается от MVVM/MVC/MVW
.
- Данные в модели : Вы можете сохранять пользовательские настройки, такие как предпочтительные языки или темы, в магазинах, чтобы ваши магазины отличались от традиционных
Model
, который должен иметь дело с бизнес-логикой и данными.
- Количество модели : Если вы используете Redux или Hyperapp или что-то подобное, существует только одно глобальное дерево состояний. Так что это сильно отличается от традиционных способов создания множества объектов
Model
.
- Компонентно-управляемый : Вам не нужно все обрабатывать. Вы можете просто импортировать компонент, созданный другими, и просто передать ему данные. Затем он будет иметь дело с пользовательскими взаимодействиями и сам обновит представление. Может быть, он содержит
Controller
, может, он содержит Model
, может, он не содержит ни одного из них. Это не важно Вам просто все равно.
- Снимок : Вы можете сделать снимок своего состояния и сохранить его в виде строки. В следующий раз вы можете просто разобрать строку и восстановить весь сайт / систему. Так же, как сохранить / загрузить электронную игру. Это основной принцип государственного управления. Хотя традиционные
MVVM/MVW
способы не заставляют вас это делать. (А также я думаю, что для традиционных способов это довольно сложно, возможно, невозможно)
- Неизменный : Возьмем, к примеру, React, у вас есть состояние и дерево виртуального домена, вы не меняете их, вы генерируете новое состояние и новое дерево для замены старых. Вы должны знать о жизненных кругах дерева и знать, как эффективно создавать новое дерево. Это явно отличается от традиционных
MVVM/MVW
способов.
Так что я думаю, что неплохо было бы называть сущности, такие как компоненты или хранилища, по-новому. Если вы называете их по-старому, возможно, программисты будут кодировать по-старому, и в результате они не будут пользоваться всей мощью современных фреймворков.