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实现禁止后退的方法
Dec 27 Javascript
JAVASCRIPT IE 与 FF中兼容问题小结
Feb 18 Javascript
JavaScript 的方法重载效果
Aug 07 Javascript
不同浏览器对回车提交表单的处理办法
Feb 13 Javascript
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
Jun 25 Javascript
JavaScript初学者需要了解10个小技巧
Aug 25 Javascript
JavaScript 命名空间 使用介绍
Aug 29 Javascript
jQuery不使用插件及swf实现无刷新文件上传
Dec 08 Javascript
关于JSON与JSONP简单总结
Aug 16 Javascript
vue通过watch对input做字数限定的方法
Jul 13 Javascript
vue axios 表单提交上传图片的实例
Mar 16 Javascript
js实现unicode码字符串与utf8字节数据互转详解
Mar 21 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制作静态网站的模板框架(二)
2006/10/09 PHP
如何使用PHP中的字符串函数
2006/11/24 PHP
PHP如何编写易读的代码
2007/07/10 PHP
php $_ENV为空的原因分析
2009/06/01 PHP
CI框架中集成CKEditor编辑器的教程
2014/06/09 PHP
PHP正则表达式匹配替换与分割功能实例浅析
2017/02/04 PHP
javascript 获取网页参数系统
2008/07/19 Javascript
Jquery 设置标题的自动翻转
2009/10/03 Javascript
jquery animate 动画效果使用说明
2009/11/04 Javascript
javascript 当前日期转化为中文的实现代码
2010/05/13 Javascript
将两个div左右并列显示并实现点击标题切换内容
2013/10/22 Javascript
javascript 实现字符串反转的三种方法
2013/11/23 Javascript
介绍JavaScript中Math.abs()方法的使用
2015/06/14 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
详解JavaScript语言的基本语法要求
2015/11/20 Javascript
jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)
2016/06/22 Javascript
JavaScript实现一个空中避难的小游戏
2017/06/06 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
angular多语言配置详解
2019/05/16 Javascript
[31:55]完美世界DOTA2联赛循环赛 IO vs GXR BO2第一场 11.04
2020/11/05 DOTA
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
详解python的四种内置数据结构
2019/03/19 Python
Python 根据数据模板创建shapefile的实现
2019/11/26 Python
澳大利亚领先的男装零售连锁店:Lowes
2020/08/07 全球购物
当文件系统受到破坏时,如何检查和修复系统?
2012/03/09 面试题
学习交流会主持词
2014/04/01 职场文书
公司介绍信范文
2015/01/31 职场文书
2015年政教主任工作总结
2015/07/23 职场文书
初中班主任工作随笔
2015/08/15 职场文书
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js
CSS中妙用 drop-shadow 实现线条光影效果
2021/11/11 HTML / CSS
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS
tomcat的catalina.out日志按自定义时间格式进行分割的操作方法
2022/04/02 Servers
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL