结合vue、react、angular简谈MVC、MVVM框架

React
如其官方介绍:React - A JavaScript library for building userinterfaces, React是一个为数据提供渲染为HTML视图的开源JavaScript库。从这个定义来看,可以发现React是一个View层,它的作用是提供了一套数据机制。用了virtual dom,属于facebook公司的

vue的官方文档是说vue的核心库也只是关注视图(View)层。
结合vue、react、angular简谈MVC、MVVM框架_第1张图片

所以,实际上来说,和angular有完整的解决方案不同,狭义的vue.js和react.js实际上只是library,还并不是一个framework,因为他们没有一整套的解决方案,属于一种“小而美”框架

换句话来说,现在我们所讨论的vue、react,都是我们将他们武装之后,他们有了一整套解决方案了。成为了一个框架,我们再来讨论他们的架构模式,属于一种“大而广”框架。

Vue

个人认为,这是毫无争议的一个MVVM框架,对MVVM理念的贯彻也是最显而易见的。
关于渐进式框架的理解
https://baijiahao.baidu.com/s?id=1647203004323024188&wfr=spider&for=pc

Model层:接口层,原始数据模型。

View层:视图层,template中的html代码。

ViewModel层:基于一个html元素构建的vue实例。将Model中的原始数据模型,构建成一份View层可以使用的视图模型。这个时候,Model层、View层完全解耦。开发者已经完全不需要顾及View的展示更新了,只需要专注业务逻辑以及ViewModel层与Model的交互逻辑就ok。

AngularJs

Model层:接口层,原始数据模型。

View层:html页面。

ViewModel层:基于ng-app构建的应用实例,与vue类似,数据双向绑定机制不同。

React

Model层:接口层,原始数据模型。

View层:编译之后的Dom。

ViewModel层:基于jsx语法,以及react构建的VDom,单向数据流。

这么一看,vue、react、angularJS不就都是MVVM框架吗?唯一的区别就是,VM层中的Model与View,vue与angular是数据双向绑定,而react由于是单向数据流,所以需要手动更改状态。
参考链接:
https://zhuanlan.zhihu.com/p/76988636
https://zhuanlan.zhihu.com/p/64257809
其他的参考链接:
https://www.cnblogs.com/zhouyangla/p/6936455.html
https://blog.csdn.net/qq_18832439/article/details/51038454
https://www.jianshu.com/p/11c89d58d5d5
https://blog.csdn.net/qq_36228442/article/details/79470408

你可能感兴趣的:(vue,vue,vue.js)