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 tips提示效果
Apr 03 Javascript
DWZ table的原生分页浅谈
Mar 01 Javascript
jQuery中extend函数详解
Feb 13 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
Dec 01 Javascript
jQuery多选框选择数量限制方法
Feb 08 Javascript
Javascript实现信息滚动效果
May 18 Javascript
纯JS实现只能输入数字的简单代码
Jun 21 Javascript
一个简易时钟效果js实现代码
Mar 25 Javascript
webpack4.0 入门实践教程
Oct 08 Javascript
微信小程序scroll-view点击项自动居中效果的实现
Mar 25 Javascript
vue-cli3访问public文件夹静态资源报错的解决方式
Sep 02 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
Oct 19 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
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
2016/01/09 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
2018/06/09 PHP
对xmlHttp对象方法和属性的理解
2011/01/17 Javascript
有关于eclipse配置spket需要注意的一些地方
2013/04/07 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
2015/10/14 Javascript
详解 javascript中offsetleft属性的用法
2015/11/11 Javascript
基于node实现websocket协议
2016/04/25 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
解决eclipse中没有js代码提示的问题
2018/10/10 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
微信小程序webview 脚手架使用详解
2019/07/22 Javascript
vue用BMap百度地图实现即时搜索功能
2019/09/26 Javascript
jQuery实现的移动端图片缩放功能组件示例
2020/05/01 jQuery
vue通过v-html指令渲染的富文本无法修改样式的解决方案
2020/05/20 Javascript
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
仅用500行Python代码实现一个英文解析器的教程
2015/04/02 Python
python简单线程和协程学习心得(分享)
2017/06/14 Python
python实现按长宽比缩放图片
2018/06/07 Python
Python编程flask使用页面模版的方法
2018/12/28 Python
python获取地震信息 微信实时推送
2019/06/18 Python
利用ImageAI库只需几行python代码实现目标检测
2019/08/09 Python
PyTorch中反卷积的用法详解
2019/12/30 Python
css3 实现元素弧线运动的示例代码
2020/04/24 HTML / CSS
加拿大最大的书店:Indigo
2017/01/01 全球购物
39美元购买一副眼镜或太阳镜:39DollarGlasses.com
2018/06/17 全球购物
美国农场鲜花速递:The Bouqs
2018/07/13 全球购物
经典c++面试题四
2015/05/14 面试题
市场营销毕业生自荐信
2013/11/23 职场文书
办公室员工岗位工作职责
2014/03/10 职场文书
产品质量承诺书范文
2014/03/27 职场文书
2014年最新大专生职业生涯规划书范文
2014/09/13 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书