说店铺是模特对吗?
Posted
技术标签:
【中文标题】说店铺是模特对吗?【英文标题】:Is it right to say that store is the model? 【发布时间】:2019-02-09 21:24:58 【问题描述】:我觉得 MVC 模式及其衍生模式(MVVM、MVP、MVW..)有点死。一种新的模式诞生了:状态管理模式(flux、mobx...)。
嗯,在学习了这些模式之后,似乎它们并没有太大的不同,组件是 VM,状态是模型,仅此而已。
我说的对吗?
如果是,为什么我们需要重命名该实体(存储而不是模型),IMO 它使理解新概念变得更加复杂,因为我们(我)寻找一个很大的差异,确认所有内容都必须重命名... 如果我错了,请帮助我了解差异在哪里?我的意思是重命名整个概念肯定有很大的不同...谢谢
【问题讨论】:
是的,基本上它们是可比的,您将控制器角色移动到视图组件(用于验证/调节)和状态处理程序(作为方法的减速器) 好吧,我没有完全错? (为什么要投反对票?-我更新了我的问题) 我从来没有对任何人投过反对票。这个问题有点主观,很难给出准确的技术答案。尽管有最新的流行语驱动框架,但 MVC 还远未消亡。 问题可能是主观的,因为人们(我)正在使用(并且知道)一个概念,然后其他人告诉他们:忘记你所知道的一切它不如你想象的那么好。当我学习新事物时我很高兴,但我觉得我不理解新概念。 【参考方案1】:如果您将 DOM 视为 View
,components/VirtualDOM 视为 ViewModel
,store 视为 Model
,那么,imo它是MVVM
。所以我认为你没有错。实际上,在我的项目中,我将我的全局 MobX 商店命名为 Store
,并将我的本地 MobX 商店(适用于某些组件)命名为 Model
。 (如果有更好的命名做法,请告诉我)
同时,状态管理模式与MVVM/MVC/MVW
有很大不同。
Model
,后者应该处理业务逻辑和数据。
模型数量:如果你使用 Redux 或者 Hyperapp 之类的,那么只有一个全局状态树。因此,它与创建大量 Model
对象的传统方式完全不同。
组件驱动:您不需要处理所有事情。您可以只导入由其他人创建的组件并将数据传递给它。然后它将处理用户交互并自行更新视图。也许它包含一个Controller
,也许它包含一个Model
,也许它不包含它们。没关系。你根本不在乎。
快照:您可以拍摄状态快照并将其保存为字符串。下次您可以只解析字符串并恢复所有网站/系统。就像电子游戏的保存/加载一样。这是状态管理模式的一个原则。虽然传统的MVVM/MVW
方式不会强迫您这样做。 (而且我认为传统方式很难做到这一点,也许是不可能的)
不可变:以 React 为例,你有一个 state 和一个 virtual-dom 树,你不改变它们,你生成一个新的 state 和一个新的树来替换旧的。您应该了解树的生命周期,并知道如何有效地生成新树。明显不同于传统的MVVM/MVW
方式。
所以我认为以新的方式命名组件或商店等实体并不是一个坏主意。如果您以旧方式命名它们,那么程序员可能会以旧方式编码,因此他们将无法享受现代框架的全部功能。
【讨论】:
以上是关于说店铺是模特对吗?的主要内容,如果未能解决你的问题,请参考以下文章