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 & DHTML 实例编程(教程)(三)初级实例篇1—上传文件控件实例
Jun 02 Javascript
js window.print实现打印特定控件或内容
Sep 16 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
May 20 Javascript
JQuery显示隐藏DIV的方法及代码实例
Apr 16 Javascript
深入探究AngularJS框架中Scope对象的超级教程
Jan 04 Javascript
易被忽视的js事件问题总结
May 14 Javascript
jQuery+PHP+Mysql实现抽奖程序
Apr 12 jQuery
js Date()日期函数浏览器兼容问题解决方法
Sep 12 Javascript
javascript中关于类型判断的一些疑惑小结
Oct 14 Javascript
微信小程序用户授权,以及判断登录是否过期的方法
May 10 Javascript
谈谈IntersectionObserver懒加载的具体使用
Oct 15 Javascript
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
Jul 11 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
PHP4.04简明安装
2006/10/09 PHP
php防注
2007/01/15 PHP
php获取bing每日壁纸示例分享
2014/02/25 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
2015/05/12 PHP
开启PHP的伪静态模式
2015/12/31 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
php从数据库中读取特定的行(实例)
2017/06/02 PHP
基于Laravel 5.2 regex验证的正确写法
2019/09/29 PHP
可以用来调试JavaScript错误的解决方案
2010/08/07 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
2015/09/07 Javascript
深入理解jQuery之防止冒泡事件
2016/05/24 Javascript
Nodejs从有门道无门菜鸟起飞必看教程
2016/07/20 NodeJs
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
2017/03/09 Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
2017/06/13 Javascript
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
2018/11/12 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——VP
2018/04/04 DOTA
解决Tensorflow安装成功,但在导入时报错的问题
2018/06/13 Python
python+Splinter实现12306抢票功能
2018/09/25 Python
用Python解数独的方法示例
2019/10/24 Python
Python3如何在Windows和Linux上打包
2020/02/25 Python
纯css3实现走马灯效果
2014/12/26 HTML / CSS
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
什么是继承
2013/12/07 面试题
农村党支部先进事迹
2014/01/14 职场文书
教师绩效工资方案
2014/02/01 职场文书
喝酒驾驶检讨书
2014/10/01 职场文书
个人先进事迹材料
2014/12/29 职场文书
酒店开业主持词
2015/07/02 职场文书
纯CSS实现酷炫的霓虹灯效果
2021/04/13 HTML / CSS
Python实战之实现简易的学生选课系统
2021/05/25 Python
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python