一、虚拟DOM本质,模板本质,组件树和DOM树,数据拦截的本质
一、虚拟DOM本质
1.真实DOM原理:是由JS引擎创建DOM后,识别为API,发送到浏览器内核中,由渲染主线程进行渲染,最终将结果返回给JS引擎。
2.什么是虚拟DOM:就是JS对象,是创建DOM对象是在JS引擎终进行的。
二、模板的本质
1、流程:进行了模板编译器最终生成了模板(解析器-模板AST-转换器-JS AST-生成器(render)-编译器)
2、在什么时候开始编译:打包的时候,运行代码的时候
三、组件树和DOM树:
1、什么是组件树:相关联的组件称为组件树
2、什么是DOM树:一个个组件
3、为什么 Vue 中既有响应式,又有虚拟 DOM 以及 diff 算法:
在vue1,2中涉及到了watcher,模板中每次引用一个,就会生成一个watcher,
为了解决这个问题,后面vue变更了逻辑,在vue2,vue3中给每一个组件生成一个watcher,
不过会造成一个问题:不知道这个组件里面具体那个位置发生了变更,为了解决这个问题,就用虚拟dom的diff算法解决这个问题。
四、数据拦截的本质:
1、作用:在突然需要给某个对象方法配置属性,使用数据拦截方法进行操作,好处是有很多提供的api方法(比如:枚举方法,set,get)
2、 在vue1,vue2中提供的方法是:object.defineProperty,而在vue3提供的方法是proxy(客户使用代理的方法去修改)
3、相同点:1、都可以进行对对象拦截;2.可以对两者读写拦截;3.可以进行深度拦截
4、不同点:1.object.defineProperty适用于特定的数据结构进行读写操作,而proxy针对的对象(读写,赋值,删除,原型,函数调用都支持)