vue3与vue2的重要区别
使用更快的原生 Proxy 代替 Object.defineProperty
Object.defineProperty无法监听添加或删除对象的属性,无法监听数组长度和下标变化。
proxy很好的解决了这些问题
Diff算法优化
在vue2中,虚拟dom是全量比较的。
在vue3中,增加了静态标记PatchFlag。
在创建vnode的时候,会根据vnode的内容是否可以变化,为其添加静态标记PatchFlag。diff的时候,只会比较有PatchFlag的节点。PatchFlag是有类型的,比如一个可变化文本节点,会将其添加PatchFlag枚举值为TEXT的静态标记。这样在diff的时候,只需比对文本内容。需要比对的内容更少了。PatchFlag还有动态class、动态style、动态属性、动态key属性等枚举值。