vue.js中数据驱动是什么

vue.js数据驱动是当数据发生变化的时候,用户界面发生相应的变化,开发者不需要手动的去修改dom,vuejs封装了数据和dom对象操作的映射,我们只需要关心数据的逻辑处理。

vue.js中数据驱动是什么

【相关文章推荐:vue.js】

什么是数据驱动

数据驱动是vuejs最大的特点。在vuejs中,所谓的数据驱动就是当数据发生变化的时候,用户界面发生相应的变化,开发者不需要手动的去修改dom。

比如说我们点击一个button,需要元素的文本进行是和否的切换。在jquery刀耕火种的年代中,对于页面的修改我们一般是这样的一个流程,我们对button绑定事件,然后获取文案对应的元素dom对象,然后根据切换修改该dom对象的文案值。

立即学习“前端免费学习笔记(深入)”;

而对于vuejs实现这个功能的流程,只需要在button元素上指明事件,同时声明对应文案的属性,点击事件的时候改变属性的值,对应元素的文本就能够自动的进行切换,我们不需要像以前那样手动的操作dom。

简而言之,就是vuejs帮我们封装了数据和dom对象操作的映射,我们只需要关心数据的逻辑处理,数据的变化就能够自然的通知页面进行页面的重新渲染。

这样做的确实给我们带来的好处,我们不需要再在代码中频繁地去操作dom了,在实际项目中,我们有很大部分代码都是在数据修改以后,手动操作重新渲染页面元素,当页面越来越复杂的时候,页面代码组织会越来难以维护。同时,js对dom的频繁操作,会使得页面代码的出错概率高,页面的视图展示会融合在js代码中,对于页面视图显示的升级也不友好。

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

MVVM框架

Vuejs的数据驱动是通过MVVM这种框架来实现的。MVVM框架主要包含3个部分:model、view和 viewmodel。

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

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

Viewmodel:就是连接视图与数据的中间件

4dad4fd358bf4cff8e6751555cac617.png

数据(Model)和视图(View)是不能直接通讯的,而是需要通过ViewModel来实现双方的通讯。当数据变化的时候,viewModel能够监听到这种变化,并及时的通知view做出修改。同样的,当页面有事件触发时,viewMOdel也能够监听到事件,并通知model进行响应。Viewmodel就相当于一个观察者,监控着双方的动作,并及时通知对方进行相应的操作。

Vue.js的数据驱动实现

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

    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是通过在实现一个观察者来实现的数据驱动。

2f6529ccd66edf8e97b6558b52c0d63.png

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

同时每一个实例对象都有一个watcher实例对象,他会在模板编译的过程中,用getter去访问data的属性,watcher此时就会把用到的data属性记为依赖,这样就建立了视图与数据之间的联系。当之后我们渲染视图的数据依赖发生改变(即数据的setter被调用)的时候,watcher会对比前后两个的数值是否发生变化,然后确定是否通知视图进行重新渲染。

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

相关免费学习推荐:JavaScript(视频)

以上就是vue.js中数据驱动是什么的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3022339.html

(0)
上一篇 2025年3月13日 05:54:17
下一篇 2025年3月7日 11:35:13

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • vue.js中怎么打开新页面

    vue.js中打开新页面的方法:1、【router-link】跳转,代码为【】;2、通过【this.$router.push】跳转。 【相关文章推荐:vue.js】 vue.js中打开新页面的方法: 1.router-link跳转    /…

    2025年3月13日
    200
  • vue.js怎么请求数据

    vue.js请求数据的方法:首先安装【vue-resource】模块;然后在【main.js】引入【vue-resource】,并在组件里面直接使用。 【相关文章推荐:vue.js】 vue.js请求数据的方法: 一,vue-resourc…

    2025年3月13日 编程技术
    200
  • vue.js路由this.route.push跳转页面不刷新怎么办

    vue.js路由this.route.push跳转页面不刷新的解决办法:使用【activated:{}】周期函数代替【mounted:{}】函数,代码为【this.$router.go(0);】。 【相关文章推荐:vue.js】 vue.j…

    2025年3月13日
    200
  • 如何知道vue.js的版本号

    查找vue.js版本号的方法:1、使用代码【npm list vue】;2、找到【package.json】文件夹,并找到【dependencies】即可查看。 【相关文章推荐:vue.js】 查找vue.js版本号的方法: 查看Vue版本…

    2025年3月13日
    200
  • vue.js中component怎么用

    vue.js中component的使用方法:1、扩展HTML元素,封装可重用的代码;2、组件是自定义元素,【Vue.js】的编译器为它添加特殊功能;3、组件也可以是原生HTML元素的形式,以is特性扩展。 【相关文章推荐:vue.js】 v…

    2025年3月13日
    200
  • vue.js怎样配置跨域文件

    vue.js配置跨域文件的方法:首先修改工程下config文件夹下的【index.js】中的【dev — proxyTable】属性;然后将target设置为需要访问的域名;最后changeorigin设置为true开启反向代理…

    2025年3月13日
    200
  • vue.js支持ie8吗

    vue.js不支持ie8,因为【Vue.js】使用 IE8不能模拟的ECMAScript 5特性,【 Vue.js】支持所有兼容ECMAScript 5的浏览器。 【相关文章推荐:vue.js】 Vue.js 不支持 IE8 及其以下版本,…

    2025年3月13日
    200
  • vue.js有哪些UI

    vue.js的UI有:1、elementUI;2、iView;3、Vue Antd,支持【vue1.x】;4、N3,支持【vue2.x】;5、AliTelecom UI;6、Vuetify,一个material design vue组件库。…

    2025年3月13日
    200
  • vue.js如何判断输入是否是数字

    vue.js判断输入是否是数字的方法:使用正则表达式来判断输入的值是否是数字,代码为【this.$message({type: ‘warning’,message: ‘请输入数字 ‘,dura…

    2025年3月13日
    200
  • vue.js如何引用vue router

    vue.js引用vue router的方法:首先安装npm包,代码为【npm install vue-router –save】;然后利用【v-link】这个【directive】。 【相关文章推荐:vue.js】 vue.js…

    2025年3月13日
    200

发表回复

登录后才能评论