美文网首页面试题
Vue中的响应系统及虚拟DOM树笔记

Vue中的响应系统及虚拟DOM树笔记

作者: 海的那一边 | 来源:发表于2019-11-06 17:35 被阅读0次

Vue和DOM的对比:

直接使用DOM实现点击一个按钮时数字加1的功能,需要先找到触发点击操作的元素,然后绑定事件处理函数,在函数中查找要修改的变量,然后再修改变量。
使用Vue,则不需要去找到触发点击操作的元素,也不需要在函数中查找要修改的变量,这些都是Vue帮忙做的。
new Vue类似于一个快递员,负责名为#app的小区的快递派送工作,data类似快递员的库房,new Vue将data中的数据派送给#app中的对应元素。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    <p>welcome</p>
    <button  id="btn">0</button>
    <p>welcome again</p>

</div>
<script>
   let btn = document.getElementById("btn");
   btn.onclick = function () {
       let btn = this;
       let n = btn.innerHTML;
       n++;
       btn.innerHTML = n;
   }

</script>

</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="vue.js"></script>
</head>
<body>
<div id="app">
    <p>welcome</p>
    <button @click="change">{{n}}</button>
    <p>welcome again</p>

</div>
<script>
    var vm = new Vue({
        el:"#app",
        data:{
            n:0
        },
        methods:{
            change(){
                this.n++;
                }
            }
        }
    )
</script>

</body>
</html>

Vue中的响应系统及虚拟DOM树:

image.png

响应系统:

实时监控data中的变量变化,并能在变量发生变化时,自动发出通知。new Vue()自动给data中的每个变量添加的访问器属性,这些访问器属性直接监控/保护data中的变量,访问器属性中的set方法,都内置了通知机制,如果试图修改data中的变量,都会通过访问器属性,从而会触发通知。vue中的data对象都被强行添加了defineProperties属性。

虚拟DOM树:

vue内存中仅保存可能变化的DOM元素和可能变化的属性的简化版DOM树。
为什么要虚拟的DOM树?真实的DOM中无关数据太多,遍历查找速率太低。虚拟的DOM树仅包含可能变化的元素及属性,所以遍历快。
虚拟DOM树形成:
new Vue()时,传入了el:"#app"参数,new Vue()找到#app父元素,扫描其内部的子元素,边扫描边创建虚拟DOM树,保存可能变化的DOM元素和可能变化的属性,首次将data中的变量赋值给{{}}中的变量。
变量变化时:
触发这个变量的访问器set方法,通知虚拟DOM树,new Vue()开始遍历DOM树找到可能变化的元素和属性,利用已封装好的DOM树的增删改查方法,修改元素及属性。

相关文章

  • Vue中的响应系统及虚拟DOM树笔记

    Vue和DOM的对比: 直接使用DOM实现点击一个按钮时数字加1的功能,需要先找到触发点击操作的元素,然后绑定事件...

  • Vue 应用性能优化指南

    得益于 Vue 的 响应式系统 和 虚拟 DOM 系统 ,Vue 在渲染组件的过程中能自动追踪数据的依赖,并精确知...

  • Vue 中的那些性能优化

    得益于 Vue 的响应式系统和虚拟 DOM 系统,Vue 在渲染组件的过程中能自动追踪数据的依赖,并精确知晓数据更...

  • Vue 性能优化

    得益于 Vue 的响应式系统和虚拟 DOM 系统,Vue 在渲染组件的过程中能自动追踪数据的依赖,并精确知晓数据更...

  • 模板语法

    模板语法 Vue 将模板编译成虚拟 DOM 渲染函数。结合响应系统,Vue 能够智能地计算出最少需要重新渲染多少组...

  • 模板

    在底层的实现上,Vue 将模板编译成虚拟 DOM 渲染函数。结合响应系统,Vue 能够智能地计算出最少需要重新渲染...

  • vue-语法

    在底层实现上,vue将模版编译成虚拟dom渲染函数。结合响应系统,vue能够智能地计算出最少需要渲染多少组件,并把...

  • 【Vue】基础(虚拟DOM & 响应式原理)

    虚拟 DOM Vue 通过建立一个虚拟 DOM 来追踪自己要如何改变真实 DOM 在Vue中定义虚拟节点(VNod...

  • Vue原理

    vue原理相关 Vue核心概念 vue实例化 虚拟dom 模板编译 数据绑定(响应式) 组件化 MVVM mode...

  • vue 中的虚拟dom树

    虚拟DOM树其实就是一个普通的js对象,它是用来描述一段HTML片段的 当页面渲染的时候Vue会创建一颗虚拟DOM...

网友评论

    本文标题:Vue中的响应系统及虚拟DOM树笔记

    本文链接:https://www.haomeiwen.com/subject/ryvdbctx.html