虚拟dom
虚拟dom是利用js对象去表示真实dom
vue3首先利用render函数把真实dom转换成虚拟dom,然后挂载到dom,最后浏览器显示
组件更改
vue重新调用render函数,创建新的虚拟dom,并和旧节点进行对比,再重新挂载到dom
下面是vue3三个核心模块
响应式模块(Reactivity Module)
允许创建js响应式对象,并且可以观察它们的变化,当使用到这些对象,会跟踪它们
编译器模块(Compiler Module)
把HTML模板编译成渲染函数 (可以发生在浏览器运行和vue的构建)
渲染模块(Render Module)
页面渲染分三个模块
组件执行过程
组件包括template模板和响应式对象 1、编译器模块把HTML转换成render函数 2、利用响应式模块初始化响应式对象 3、渲染模块调用render函数(引用了响应式对象),观察响应式对象的变化,render函数返回一个虚拟dom节点 4、用虚拟dom创建web页面
当响应式对象发生变化时
响应式对象由于是被监视的,再次调用render函数生成新虚拟dom,新旧虚拟dom重新发送到补丁函数patch phase中,最后更新页面