虚拟DOM & 深入响应式原理

本文探讨了虚拟DOM的概念,解释了为何使用虚拟DOM以提高性能,并详细介绍了Vue2.x的虚拟DOM diff原理。此外,还讨论了数据驱动原理和双向数据绑定,以及在JavaScript中实现虚拟DOM的方法。文章还涉及了模拟数据生成、axios和fetch的使用,并对响应式原理进行了深入分析,包括数据劫持、订阅发布和Vue3.0的改进。
摘要由CSDN通过智能技术生成

虚拟DOM

  • 为什么使用虚拟DOM 思考: 操作真实DOM所消耗的时间 和 操作数据所消耗的时间 ? 在循环中操作真实DOM消耗的时间很长

  • 深入Vue2.x的虚拟DOM diff原理
    虚拟DOM是在DOM的基础上在内存建立了一个抽象层,对数据和状态所做的任何改动,都会被自动且高效的同步到虚拟DOM,最后再批量同步到DOM中
    patch对象,即补丁对象

  • 模拟虚拟DOM
    1.获取数据
    var model = {
    msg: 'hello ’
    }
    2.创建VDOM对象
    var vdom = {
    tag: ‘DIV’,
    attr: {
    className: ‘box’
    },
    children: [
    {
    tag: ‘UL’,
    attr: {},
    children: [
    {
    tag: ‘LI’,
    attr: {},
    content: model.msg
    }
    ]
    }
    ]
    }
    3.渲染DOM
    var box = document.createElement(‘DIV’)
    var ul = document.createElement(‘UL’)
    var li = document.createElement(‘LI’)

box.className = vdom.attr.className
li.innerHTML = vdom.children[0].children[0].content

ul.appendChild(li)
box.appendChild(ul)
document.body.appendChild( box )
4.数据改变
model.msg = “hello 1905”
5.重新生成vDOM
vdom = {
tag: ‘DIV’,
attr: {
className: ‘box’
},
children: [
{
tag: ‘UL’,
attr: {},
children: [
{
tag: ‘li’,
attr: {},
content: model.msg
}
]
}
]
}
6.通过diff算法进行两个vdom的比较,将不同之处挑选出来,形成一个patch对象,即补丁对象,再去重新渲染

  • diff算法
    diff算法来源于后端读懂diff
    这个算法来源于后端,它的作用就是比较两个文件,然后将两个文件中的不同之 处挑选出来,将挑选出来的内容
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值