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 相关文章推荐
js png图片(有含有透明)在IE6中为什么不透明了
Feb 07 Javascript
EasySlider 基于jQuery功能强大简单易用的滑动门插件
Jun 11 Javascript
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
Aug 12 Javascript
js列举css中所有图标的实现代码
Jul 04 Javascript
JavaScript跨域方法汇总
Oct 16 Javascript
JavaScript控制网页平滑滚动到指定元素位置的方法
Apr 17 Javascript
DropDownList控件绑定数据源的三种方法
Dec 24 Javascript
js 奇葩技巧之隐藏代码
Aug 11 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
Jul 20 Javascript
vue-cli 关闭热更新操作
Sep 18 Javascript
js中复选框的取值及赋值示例详解
Oct 18 Javascript
vue脚手架项目创建步骤详解
Mar 02 Vue.js
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
一个数据采集类
2007/02/14 PHP
php 获取远程网页内容的函数
2009/09/08 PHP
php实现文件下载简单示例(代码实现文件下载)
2014/03/10 PHP
php生成rss类用法实例
2015/04/14 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
PhpStorm配置Xdebug调试的方法步骤
2019/02/02 PHP
php抽象类和接口知识点整理总结
2019/08/02 PHP
Laravel框架源码解析之入口文件原理分析
2020/05/14 PHP
jQuery Mobile的loading对话框显示/隐藏方法分享
2013/11/26 Javascript
通过JS来动态的修改url,实现对url的增删查改
2014/09/01 Javascript
jQuery中extend函数的实现原理详解
2015/02/03 Javascript
深入理解JavaScript系列(33):设计模式之策略模式详解
2015/03/03 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
nodejs 实现钉钉ISV接入的加密解密方法
2017/01/16 NodeJs
jQuery中的一些小技巧
2017/01/18 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
深入掌握 react的 setState的工作机制
2017/09/27 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
Python中splitlines()方法的使用简介
2015/05/20 Python
python实现简单登陆流程的方法
2018/04/22 Python
Django实现简单网页弹出警告代码
2019/11/15 Python
在Django下创建项目以及设置settings.py教程
2019/12/03 Python
Python中zip()函数的解释和可视化(实例详解)
2020/02/16 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
2020/07/23 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
M1芯片安装python3.9.1的实现
2021/02/02 Python
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
公司JAVA开发面试题
2015/04/02 面试题
初中生个人学习的自我评价
2013/12/04 职场文书
八年级数学教学反思
2014/01/31 职场文书
研究生简历自我评价范文
2014/09/13 职场文书
2015年国税春训心得体会
2015/03/09 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript