vue3简单了解

首先对于vue.js 3.0,它是vue.js 2.0的升级版本,在4月21号晚,Vue创始人尤雨溪在B站直播分享了 Vue.js 3.0最新进展,对于vue3,有很多性能上的优化:

1).编译阶段

我们在调用组件的过程中,其实组件都有一个对应的watcher方法,来监听组件内部所发生的变化,如果发生变化,就会用到,getter,setter来进行相关组件的重新渲染。

双向图

因此,Vue3在编译阶段,做了进一步优化。主要有如下:

~1.diff算法优化

1).我们都知道diff算法可以形成dom树,在vue2中,dom树如果渲染完毕,在想要更新,就需要整个dom树一起变化,节点之间进行比较,没有发生变化的节点也会重新渲染,非常的消耗性能。
2).在vue3中,增加了一个静态标记flag,也就是说我们在发生变化时只比较有flag标记的地方,这样的话,提高了性能

diff算法比较

~2.静态提升

vue2中对于静态不需要发生变化的元素,在整个dom树发生变化时,静态元素也会重新渲染,消耗性能。vue3中,对于静态内容做了静态提升,也就是说,dom树更新的时候,会直接复用,这样就不会重复创建节点,优化了内存。

~3.事件监听缓存

默认情况下,vue绑定事件是动态绑定,每次启用都要监听他的变化,而用到这个事件监听缓存之后,diff算法重新渲染会直接使用这个方法


2).源码体积

相对于vue2,vue3整个源码体积相对减少,移出了一些不常用的Api外,更重要的是在打包的时候,我们只需要打包我们所用到,例如ref,reactive,components等,没有用到的模块则会被摇掉,大大节省了打包后文件的大小,提升了运行效率。

3).响应式的变更

1.我们都知道在vue2中,他的核心特点之一就是数据的双向绑定,他的实现原理是通过Object.defineProperty进行双向绑定,深度遍历所有属性,通过gettersetter进行实现双向绑定。
2.到了vue3采用了ES2015的Proxy,就更为高效,Proxy可以对整个对象进行监听,所有不需要深度遍历监听。
-/ 可以监听动态属性的添加
-/ 可以监听到数组的索引和数组length属性
-/ 可以监听删除属性

proxy


以上只是对vue3部分优化进行简析,其实更多的是性能方面的优化:

1.重写了虚拟Dom实现(且保证了兼容性,脱离模版的渲染需求旺盛)
2.编译模板的优化
3.更高效的组件初始化
4.undate性能提高1.3~2倍
5.SSR速度提高了2~3倍


总结:对于vue3,总得来说是对响应式,模板等,更多的是对性能方面的优化,在底层代码和api方面都有更新,而且在vue3中,逐渐使用typeScript语言,更严格!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容