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 相关文章推荐
jquery easyui 对于开始时间小于结束时间的判断示例
Mar 22 Javascript
Javascript获取数组中的最大值和最小值的方法汇总
Jan 01 Javascript
javascript冒泡排序小结
Apr 10 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
May 03 Javascript
微信浏览器禁止页面下拉查看网址实例详解
Jun 28 Javascript
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
Jan 08 Javascript
深入理解ES6中let和闭包
Feb 22 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
May 30 jQuery
JS限制输入框输入的实现代码
Jul 02 Javascript
vue路由组件按需加载的几种方法小结
Jul 12 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
Jul 25 Javascript
angularJs利用$scope处理升降序的方法
Oct 08 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
php下HTTP Response中的Chunked编码实现方法
2008/11/19 PHP
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
如何使用PHP实现javascript的escape和unescape函数
2013/06/29 PHP
PHP 关于访问控制的和运算符优先级介绍
2013/07/08 PHP
ThinkPHP基本的增删查改操作实例教程
2014/08/22 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
实现PHP中session存储及删除变量
2018/10/15 PHP
PHP获取对象属性的三种方法实例分析
2019/01/03 PHP
PHP获取当前时间不准确问题解决方案
2020/08/14 PHP
JavaScript 全角转半角部分
2009/10/28 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
JS实现带鼠标效果的头像及文章列表代码
2015/09/27 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
AngularJS 面试题集锦
2016/09/06 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
2016/10/25 Javascript
JavaScript动态数量的文件上传控件
2016/11/18 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
浅析VUE防抖与节流
2020/11/24 Vue.js
Python中暂存上传图片的方法
2015/02/18 Python
Python解析xml中dom元素的方法
2015/03/12 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
2017/04/14 Python
Python 修改列表中的元素方法
2018/06/26 Python
Python实现将Excel转换成为image的方法
2018/10/23 Python
用Python逐行分析文件方法
2019/01/28 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
opencv3/C++图像像素操作详解
2019/12/10 Python
Python实现微信好友的数据分析
2019/12/16 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
CSS3 transform的skew属性值图文详解
2014/07/21 HTML / CSS
雅诗兰黛旗下走天然植物路线的彩妆品牌:Prescriptives
2016/08/14 全球购物
家长通知书家长评语
2014/04/17 职场文书
先进党支部事迹材料2016
2016/02/26 职场文书
解决golang 关于全局变量的坑
2021/05/06 Golang