【VUE】vuejs实现数据驱动视图原理

浅谈vuejs实现数据驱动视图原理 什么是数据驱动 数据驱动是vuejs最大的特点。在vuejs中,所谓的数据驱动就是当数据发生变化的时候,用户界面发生相应的变化,开发者不需要手动的去修改dom。 比如说我们点击一个button,需要元素的文本进行是和否的切换。在jquery刀耕火种的年代中,对于页面的修改我们一般是这样的一个流程,我们对button绑定事件,然后获取文案对应的元素dom对象,然后根据切换修改该dom对象的文案值。 而对于vuejs实现这个功能的流程,只需要在button元素上指明事件,同时声明对应文案的属性,点击事件的时候改变属性的值,对应元素的文本就能够自动的进行切换,我们不需要像以前那样手动的操作dom。 立即下载

01 什么是数据驱动

数据驱动是vuejs最大的特点。

在vuejs中,所谓的数据驱动就是当数据发生变化的时候,

用户界面发生相应的变化,开发者不需要手动的去修改dom。

比如说我们点击一个button,需要元素的文本进行是和否的切换。

在jquery刀耕火种的年代中,对于页面的修改我们一般是这样的一个流程,

我们对button绑定事件,然后获取文案对应的元素dom对象,然后根据切换修改该dom对象的文案值。

而对于vuejs实现这个功能的流程,只需要在button元素上指明事件,

同时声明对应文案的属性,点击事件的时候改变属性的值,

对应元素的文本就能够自动的进行切换,我们不需要像以前那样手动的操作dom。

简而言之,就是vuejs帮我们封装了数据和dom对象操作的映射,

我们只需要关心数据的逻辑处理,数据的变化就能够自然的通知页面进行页面的重新渲染。

这样做的确实给我们带来的好处,我们不需要再在代码中频繁地去操作dom了,

在实际项目中,我们有很大部分代码都是在数据修改以后,手动操作重新渲染页面元素,

当页面越来越复杂的时候,页面代码组织会越来难以维护。

同时,js对dom的频繁操作,会使得页面代码的出错概率高,

页面的视图展示会融合在js代码中,对于页面视图显示的升级也不友好。

那么vuejs是如何实现这种数据驱动的呢?

02 MVVM框架

Vuejs的数据驱动是通过MVVM这种框架来实现的。

MVVM框架主要包含3个部分:model、view和 viewmodel。

Model:指的是数据部分,对应到前端就是javascript对象

View:指的是视图部分,对应前端就是dom

Viewmodel:就是连接视图与数据的中间件
在这里插入图片描述
数据(Model)和视图(View)是不能直接通讯的,而是需要通过ViewModel来实现双方的通讯。

当数据变化的时候,viewModel能够监听到这种变化,并及时的通知view做出修改。

同样的,当页面有事件触发时,viewMOdel也能够监听到事件,并通知model进行响应。

Viewmodel就相当于一个观察者,监控着双方的动作,并及时通知对方进行相应的操作。

03 Vuejs的数据驱动实现

对于数据驱动的实现,我们可以简单的通过定时器来实现这个功能,定时器定时监控对象数据,定时器监控数据变化,确定是否更新界面

a = 1;
function renderDom(){
   document.getElementById('app').innerHTML = '数据是' + a;
}

function watcher(method){
   var b = a;
   method.apply();
    return setInterval(function(){
      if(b != a){
           method.apply();
           b = a;
      }
   }, 1000)
}
watcher(renderDom);

当然vuejs不可能是这样简单暴力的实现方式,vuejs是通过在实现一个观察者来实现的数据驱动。

首先,vuejs在实例化的过程中,会对遍历传给实例化对象选项中的data 选项,遍历其所有属性并使用 Object.defineProperty 把这些属性全部转为 getter/setter。

同时每一个实例对象都有一个watcher实例对象,他会在模板编译的过程中,用getter去访问data的属性,watcher此时就会把用到的data属性记为依赖,这样就建立了视图与数据之间的联系。

当之后我们渲染视图的数据依赖发生改变(即数据的setter被调用)的时候,watcher会对比前后两个的数值是否发生变化,然后确定是否通知视图进行重新渲染。

这样就实现了所谓的数据对于视图的驱动。

关于代码的实现,可以参考一下这篇文章 实现vue2.0响应式的基本思路

智能汽车竞赛摄像头处理(4)——摄像头循迹思路讲解 智能汽车竞赛摄像头处理(4)对摄像头循迹思路进行讲解。 阅读详情

相关推荐

Wordpress实战之第二章安装wordpress 软件需要的软件

使用下载并安装phpstudy面版工具 wget -O install.sh?https://notdocker.xp.cn/install.sh?&& sudo bash install.sh 2.安装成功如下 ==============运行状态========================= webpanel stop phpstudy running =================...

安全参透之旅 609

MVVM的概念、原理及实现__BaiMoci

代码实现来源于珠峰公开课mvvm原理的讲解。此文在此记录一下,通过手写几遍代码加深一下自己对mvvm理解。 1、MVVM的概念   model-view-viewModel,通过数据劫持+发布订阅模式来实现。   mvvm是一种设计思想。Model代表数据模型,可以在model中定义数据修改和操作的业务逻辑;view表示ui组件,负责将数据模型转换为ui展现出来,它做的是数据绑定的声明、 指令的声明、 事件绑定的声明。;而viewModel是一个同步view和model的对象。在mvvm框架中...

BaiMoci的博客 1004

别再死记公式了!用TL072运放设计带通滤波器,调出干净正弦波的实战心得与误区盘点

本文分享了使用TL072运放设计带通滤波器的实战经验,重点解决波形失真问题,提供单电源供电优化、动态调谐技巧及仿真与现实的参数修正方法,帮助工程师调出纯净正弦波。内容涵盖模拟电路设计中的常见误区与解决方案,适合电子工程师和爱好者参考。

weixin_29172963的博客 403

Vue 原理

vue 原理总结:MVVM、响应式、虚拟 dom、diff 算法、组件渲染/更新过程、异步渲染、答疑

sinat_39145919的博客 1083

别再只会用Excel了!Minitab 21手把手教你搞定SPC控制图(从数据导入到结果解读)

本文详细介绍了如何使用Minitab 21高效制作SPC控制图,从数据导入到结果解读的全流程。通过对比Excel的局限性,展示Minitab在自动化计算、图表标准化和特殊原因检验等方面的优势,帮助质量管理人员提升工作效率和数据分析专业性。

weixin_30878501的博客 380

解决 python2.7中 ImportError: No module named Crypto.Signature

我的解决办法,先查看有没有安装 pip,直接执行pip 回车 没有出现null什么的就安装了,如果没有安装去其他博客哪里看一下,正常情况是默认就有的,然后使用。发现我自己也不会啊,就百度看看,想着网上的解决方法一大片,但是都是废话,能用的没有几个,而且能安装的没有几个。这个里面的python2、3就是系统里面的python版本,直接跟我这样就可以了除非版本不一样,也就是没有这个版本。就可以使用了,第一个应该是卸载之前的,然后重新安装,我的就是这样解决的。就比如我的,我现在使用的 python2.7。

记录一下 1609

vue MVVM原理 ,生命周期,以及方法和数据传递

VUE官网:https://cn.vuejs.org/ • vue我们现在学习和使用的是第二代版本 • VUE是渐进式框架 • Vue是一个类 • 每当创建一个实例,就相当于创建一个viewModel监听器:可以监听对应视图和对应数据的相互改变 • 在框架中,框架没有直接操作真正的DOM,而是操作了虚拟的DOM(js对象),更改数据以后,就会更改虚拟的DOM,然后进行DOM-diff的对比,只需...

致我逝去的青春的博客 559

硬件学习手册【总目录】

欢迎大家来到《硬件学习手册》,专栏主要包括 《硬件经验手册》《电子元器件器件手册》《PCB手册》《CPU手册》《元器件选型手册》五个分册。在开始专栏的更新前,博主先列出专栏的大纲,以供大家参考。大家直接点击大纲中的蓝色标题即可轻松传送。

fydar的博客 5848

深入探索 Vue 响应式原理:数据驱动视图的奥秘

Vue 响应式原理是 Vue 框架的核心特性之一,它允许在数据发生变化时自动更新视图。数据绑定:Vue 响应式原理使得开发者能够将数据与视图进行绑定,当数据发生变化时,视图会自动更新,无需手动操作 DOM。这使得开发效率更高,代码更简洁。状态管理:在 Vue 中,可以使用 Vuex 进行状态管理。Vuex 基于 Vue 响应式原理实现,它提供了一种集中式的状态管理方式,方便管理复杂的应用状态。组件通信:Vue 组件之间可以通过 props、emit 和 Vuex 等方式进行通信。

你若盛开,清风自来 1931

网格质量评价

CFD中评价网格质量的方法

B_etter_Man的博客 1万+

2025电赛嵌入式:K210教程-如何刷固件 如何烧录代码 全网唯一

本文介绍了K210开发板的固件刷写和开发环境搭建方法。主要内容包括:1)从Sipeed官网下载合适的MaixPy固件,根据需求选择完整版或精简版;2)使用k-flash等工具烧录固件,注意区分亚博和Sipeed开发板的固件版本;3)介绍了擦除闪存的两种模式(部分擦除和完全擦除)及其应用场景;4)搭建CanMV开发环境,通过MaixPy IDE连接开发板并进行程序调试。文章还提供了常见问题的解决方法,如串口驱动安装、固件兼容性检查等,为K210开发提供了完整的入门指南。

FJN110的博客 546

vue数据驱动视图是如何实现的

当Vue实例中的数据(data)发生变化时,与之相关联的视图(template)会自动更新,反映出最新的数据状态。

weixin_46074818的博客 838

一种白平衡增益计算中白点权重计算简易实现方式

一种白平衡白点距离权重简易实现方式

大熊 384

vuejs实现数据驱动视图原理

vuejs实现数据驱动视图原理 什么是数据驱动 数据驱动是vuejs最大的特点。在vuejs中,所谓的数据驱动就是当数据发生变化的时候,用户界面发生相应的变化,开发者不需要手动的去修改dom。 比如说我们点击一个button,需要元素的文本进行是和否的切换。在jquery刀耕火种的年代中,对于页面的修改我们一般是这样的一个流程,我们对button绑定事件,然后获取文案...

372

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

vue实现数据驱动视图原理

一、什么是数据驱动   数据驱动是vuejs最大的特点。在vuejs中,所谓的数据驱动就是当数据发生变化的时候,用户界面发生相应的变化,开发者不需要手动的去修改dom。   比如说我们点击一个button,需要元素的文本进行是和否的切换。在jquery刀耕火种的年代中,对于页面的修改我们一般是这样的一个流程,我们对button绑定事件,然后获取文案对应的元素dom对象,然后根据切换修改该dom对象...

weixin_34018202的博客 706

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

vue.js实现数据驱动视图原理

vuejs实现数据驱动视图原理什么是数据驱动?数据驱动是vuejs最大的特点。在vuejs中,所谓的数据驱动就是当数据发生变化的时候,用户界面发生相应的变化,开发者不需要手动的去修改dom。比如说我们点击一个button,需要元素的文本进行是和否的切换。在jquery刀耕火种的年代中,对于页面的修改我们一般是这样的一个流程,我们对button绑定事件,然后获取文案对应的元素dom对象,然后根据切换修

alokka的博客 2137

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

上一篇: 【VUE】vuejs2.0 vue实例的生命周期
下一篇: 【图】听风是风
tanpenggood
博客等级 码龄9年 129粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值