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 相关文章推荐
Javascript new关键字的玄机 以及其它
Aug 25 Javascript
Jquery ajax传递复杂参数给WebService的实现代码
Aug 08 Javascript
js 获取(接收)地址栏参数值的方法
Apr 01 Javascript
常用的JavaScript验证正则表达式汇总
Nov 26 Javascript
javascript实现控制div颜色
Jul 07 Javascript
对Angular.js Controller如何进行单元测试
Oct 25 Javascript
jQuery编写设置和获取颜色的插件
Jan 09 Javascript
创建简单的node服务器实例(分享)
Jun 23 Javascript
vue2.0使用v-for循环制作多级嵌套菜单栏
Jun 25 Javascript
Vue数据绑定实例写法
Aug 06 Javascript
在博客园博文中添加自定义右键菜单的方法详解
Feb 05 Javascript
ant-design-vue按需加载的坑的解决
May 14 Javascript
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
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
2012/03/27 PHP
PHP删除数组中特定元素的两种方法
2013/07/02 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
浅谈PHP中的那些魔术常量
2020/12/02 PHP
一个js拖拽的效果类和dom-drag.js浅析
2010/07/17 Javascript
解析javascript系统错误:-1072896658的解决办法
2013/07/08 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
2015/06/19 Javascript
jQuery实现Flash效果上下翻动的中英文导航菜单代码
2015/09/22 Javascript
分享有关jQuery中animate、slide、fade等动画的连续触发、滞后反复执行的bug
2016/01/10 Javascript
深入浅析JavaScript面向对象和原型函数
2016/02/06 Javascript
JavaScript动态生成二维码图片
2016/04/20 Javascript
使用 bootstrap modal遇到的问题小结
2016/11/09 Javascript
JavaScript常见的五种数组去重的方式
2016/12/15 Javascript
微信小程序商城项目之商品属性分类(4)
2017/04/17 Javascript
微信小程序 页面滑动事件的实例详解
2017/10/12 Javascript
ES6入门教程之变量的解构赋值详解
2019/04/13 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
简单的Python抓taobao图片爬虫
2014/10/26 Python
Python信息抽取之乱码解决办法
2017/06/29 Python
Python编写一个闹钟功能
2017/07/11 Python
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
Python解析命令行读取参数之argparse模块
2019/07/26 Python
django 实现手动存储文件到model的FileField
2020/03/30 Python
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
Vans英国官方网站:美国南加州的原创极限运动潮牌
2017/01/20 全球购物
《诺贝尔》教学反思
2014/02/17 职场文书
飘柔洗发水广告词
2014/03/14 职场文书
我爱我家教学反思
2014/05/01 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
派出所副所长四风问题个人整改措施思想汇报
2014/10/13 职场文书
唐山大地震的观后感
2015/06/05 职场文书
天那边观后感
2015/06/09 职场文书
MySQL 隔离数据列和前缀索引的使用总结
2021/05/14 MySQL
如何用Laravel包含你自己的帮助函数
2021/05/27 PHP