vue中的mvvm模式讲解


Posted in Javascript onJanuary 31, 2019

学习了MVVM模式

起先还觉得有点难,后面与双向数据绑定链接起来还是很容易理解的。

那么什么是MVVM呢?

不明思议咋们肯定和我想的一样   每个单词的首写字母呗!

对没错就是它 Model-View-ViewModel。  可以实现我们的双向数据绑定

下面我来用我的理解解析下它们之间的关系:

哈哈 有点小尴尬哈

先来说下View与Model之间有联系吗?

在MVVM架构下,View 和 Model 之间其实并没有直接的联系,而是通过ViewModel进行交互,Model 和 ViewModel 之间的交互是双向的, 因此View 数据的变化会同步到Model中,而Model 数据的变化也会立即反应到View 上。

好啦,说到这可能有些小伙伴会问view 什么,Model是什么?

Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑;

View 代表UI 组件,它负责将数据模型转化成UI 展现出来,ViewModel 是一个同步View 和 Model的对象。

Vue是以数据为驱动的,Vue自身将DOM和数据进行绑定,一旦创建绑定,DOM和数据将保持同步,每当数据发生变化,DOM会跟着变化。

现在明白了吧!

好啦  我们继续谈谈它们三者之间的关系呀  它们之间是不是有个三角恋呐

哈哈  不错

ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,ViewModel里面包含DOM Listeners和Data Bindings,DOM Listeners和Data Bindings是实现双向绑定的关键。DOM Listeners监听页面所有View层DOM元素的变化,当发生变化,Model层的数据随之变化;Data Bindings监听Model层的数据,当数据发生变化,View层的DOM元素随之变化。

mvvm有什么好处呢  当然这个肯定有好处的 不然学它干哈

1. 低耦合。View可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。

2. 可重用性。可以把一些视图的逻辑放在ViewModel里面,让很多View重用这段视图逻辑。

3. 独立开发。开发人员可以专注与业务逻辑和数据的开发(ViewModel)。设计人员可以专注于界面(View)的设计。

4. 可测试性。可以针对ViewModel来对界面(View)进行测试

咋们一起走向vue之路吧

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Javascript 相关文章推荐
addEventListener()第三个参数useCapture (Boolean)详细解析
Nov 07 Javascript
javaScript对文字按照拼音排序实现代码
Dec 27 Javascript
javascript中cookie对象用法实例分析
Jan 30 Javascript
jQuery随机密码生成的方法
Mar 09 Javascript
浅析JavaScript 调试方法和技巧
Oct 22 Javascript
Node.js 实现简单小说爬虫实例
Nov 18 Javascript
基于jQuery实现表格的排序
Dec 02 Javascript
AngularJS与后端php的数据交互方法
Aug 13 Javascript
基于Three.js实现360度全景图片
Dec 30 Javascript
js实现轮播图效果 纯js实现图片自动切换
Aug 09 Javascript
在antd Form表单中select设置初始值操作
Nov 02 Javascript
Vue中使用import进行路由懒加载的原理分析
Apr 01 Vue.js
Vue和React组件之间的传值方式详解
Jan 31 #Javascript
使用Angular Cli如何创建Angular私有库详解
Jan 30 #Javascript
async/await优雅的错误处理方法总结
Jan 30 #Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
Jan 30 #Javascript
JavaScript之解构赋值的理解
Jan 30 #Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
Jan 30 #Javascript
JS实现的新闻列表自动滚动效果示例
Jan 30 #Javascript
You might like
shopex主机报错误请求解决方案(No such file or directory)
2011/12/27 PHP
Laravel5中contracts详解
2015/03/02 PHP
php根据指定位置和长度获得子字符串的方法
2015/03/17 PHP
百度工程师讲PHP函数的实现原理及性能分析(二)
2015/05/13 PHP
php使用preg_match()函数验证ip地址的方法
2017/01/07 PHP
摘自启点的main.js
2008/04/20 Javascript
WEB 浏览器兼容 推荐收藏
2010/05/14 Javascript
某人初学javascript的时候写的学习笔记
2010/12/30 Javascript
Jquery 的outerHeight方法使用介绍
2013/09/11 Javascript
JavaScript中使用Substring删除字符串最后一个字符
2013/11/03 Javascript
JavaScript兼容性总结之获取非行间样式案例
2016/08/07 Javascript
JQuery中Ajax的操作完整例子
2017/03/07 Javascript
在nginx上部署vue项目(history模式)的方法
2017/12/28 Javascript
微信小程序wepy框架笔记小结
2018/08/08 Javascript
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
Vue组件之单向数据流的解决方法
2018/11/10 Javascript
用图片替换checkbox原始样式并实现同样的功能
2018/11/15 Javascript
Vue源码解析之Template转化为AST的实现方法
2018/12/14 Javascript
jQuery实现图片切换效果
2020/10/19 jQuery
在Python中操作文件之seek()方法的使用教程
2015/05/24 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
pycharm如何实现跨目录调用文件
2020/02/28 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
SmartBuyGlasses美国官网:太阳眼镜和眼镜
2017/08/20 全球购物
YBF Beauty官网:美丽挚友,美国知名彩妆品牌
2020/11/22 全球购物
中学生自我鉴定
2014/02/04 职场文书
物流毕业生个人的自我评价
2014/02/13 职场文书
师范教师专业大学生职业生涯规划范文
2014/03/02 职场文书
幼儿园区域活动总结
2014/05/08 职场文书
出差报告怎么写
2014/11/06 职场文书
城南旧事读书笔记
2015/06/29 职场文书
如何书写读后感?(附范文)
2019/07/26 职场文书
golang interface判断为空nil的实现代码
2021/04/24 Golang
python 远程执行命令的详细代码
2022/02/15 Python
JS实现页面炫酷的时钟特效示例
2022/08/14 Javascript