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 相关文章推荐
PJBlog插件 防刷新的在线播放器
Oct 25 Javascript
js新闻滚动 js如何实现新闻滚动效果
Jan 07 Javascript
JqueryMobile动态生成listView并实现刷新的两种方法
Mar 05 Javascript
Javascript遍历table中的元素示例代码
Jul 08 Javascript
Angularjs整合微信UI(weui)
Mar 15 Javascript
Iscrool下拉刷新功能实现方法(推荐)
Jun 26 Javascript
require.js中的define函数详解
Jul 10 Javascript
javascript中new Array()和var arr=[]用法区别
Dec 01 Javascript
微信小程序实现即时通信聊天功能的实例代码
Aug 17 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
Dec 17 Javascript
处理JavaScript值为undefined的7个小技巧
Jul 28 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
Feb 04 jQuery
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
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
2011/07/17 PHP
php 阴历-农历-转换类代码
2012/01/16 PHP
php中数字0和空值的区别分析
2014/06/05 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
2016/02/15 PHP
PHP6新特性分析
2016/03/03 PHP
phpstudy隐藏index.php的方法
2020/09/21 PHP
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
2013/04/26 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
2014/12/16 Javascript
实例讲解Jquery中隐藏hide、显示show、切换toggle的用法
2016/05/13 Javascript
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
js遮罩效果制作弹出注册界面效果
2017/01/25 Javascript
Webpack优化配置缩小文件搜索范围
2017/12/25 Javascript
浅析前端路由简介以及vue-router实现原理
2018/06/01 Javascript
VUE 3D轮播图封装实现方法
2018/07/03 Javascript
vue生成token并保存到本地存储中
2018/07/17 Javascript
node.js事件轮询机制原理知识点
2019/12/22 Javascript
React 条件渲染最佳实践小结(7种)
2020/09/27 Javascript
[06:30]DOTA2英雄梦之声_第15期_死亡先知
2014/06/21 DOTA
Python中用pycurl监控http响应时间脚本分享
2015/02/02 Python
使用python实现正则匹配检索远端FTP目录下的文件
2015/03/25 Python
给Python初学者的一些编程技巧
2015/04/03 Python
Python实现的科学计算器功能示例
2017/08/04 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
使用Django连接Mysql数据库步骤
2019/01/15 Python
Python实现的读取文件内容并写入其他文件操作示例
2019/04/09 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
python实现AHP算法的方法实例(层次分析法)
2020/09/09 Python
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
怀俄明州飞钓:Platte River Fly Shop
2017/12/28 全球购物
美国孕妇装购物网站:Motherhood Maternity
2019/09/22 全球购物
95%的面试官都会问到的50道Java线程题,附答案
2012/08/03 面试题
2014年党员发展工作总结
2014/12/02 职场文书
给老师的一封感谢信
2015/01/20 职场文书
SQLServer2019 数据库的基本使用之图形化界面操作的实现
2021/04/08 SQL Server
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python