Vue和React的核心都有虚拟Dom,虚拟Dom的作用除了能够减少Dom操作,提升性能之外,其实还可以用来做多端渲染,这也算是近年来各种跨平台框架出现的一个原因吧。
MVC是软件设计中的一种模式,通常被用来扩展用户界面,数据以及业务逻辑。它强调业务逻辑和视图的分离。这种业务逻辑和视图的分离可以提供一种很好的开发体验。
其他的设计模式其实是基于MVC的扩展,比如MVVM,MVP,以及MVM(model-vuiew-whatever)。
在web开发中,我们可以将HTML/css构成的界面理解为View,把js的操作理解为Controller,把本地缓存的数据理解为Modal,比如我们存在本地数据库IndexeDB中的数据。
web开发的早期,MVC主要用于服务端,但是现在,随着各种框架的兴起,这种模式在前端领域也越来越流行。
在MVC中,View是可以直接访问Modal的。所以,View里面会包含Modal的信息,有可能还会包含一些业务逻辑。在MVC中,关注的更多的是Modal的不变性,而对于同时有多个对Modal的不同展示以View。
在MVC中,Modal不依赖于View,但是View是依赖于Modal的
。一些业务在View里面实现了,要更改View也将是一件困难的事情。尤其是多个视图互相引用同一个Modal中的数据时。这种情况将变得更加复杂。
MVP(Modal-View-Presenter),Modal提供数据,View负责展示,Presenter负责逻辑的处理。
它和MVC的一个重要区别在于
:View并不直接使用Modal,他们之间通过Presenter进行通信,所有的交互发生在Presenter内部。
而在MVC中,View会直接从Modal中读取数据而不是Controller。
在MVP中,Presenter完全将Modal和View进行了分离,主要的逻辑在Presenter中实现。并且,Presenter和具体的View没有具体的联系,而是通过定义好的接口实现,这样一来,当View发生变化的时候就可以保持Presenter的不变性,一旦Presenter不变,即可做到代码的重用。
MVVM是基于MVC和MVP的进阶版。
MVVM的模式是基于数据绑定
。View绑定到ViewModal,然后当View发生变化时通知ViewModal,ViewModal则和Modal进行通信,告诉Modal去更新UI。
这样的结构其实也是一种分层的设计,只是在实现的过程当中,ViewModal的实现起来相当复杂。比如Vue的双向绑定。
这样的目的还是和上面的两种模式一样:都是为了分离视图和模型。YOU点有以下几点:
但是,使用MVVM开发的组件一般情况下不涉及数据持久化的内容,如果需要数据持久化,则需要去考虑一些具体的实现方案。
本文分享自 JavaScript高级程序设计 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有