对于熟悉vue2的小伙伴来说,如何在vue2的基础上快速全面地理解和掌握vue3呢?
Q: 相对于vue2来说,vue3做了哪些改变?
分为两个层面来说,一个是实现层面,一个是运用层面。
实现层面
1. 响应式原理的实现方式
使用 proxy 代替 defineProperty(proxy不兼容IE)
vue2的缺陷:
1 defineProperty无法监听数组方法变化,但是vue2对数组的八个方法做了hack
2 defineProperty可以监控数组下标变化,只是考虑到性能的问题,vue2放弃了这个特性,所以arr[1] = 3
在vue2并不会触发数据更新
3 defineProperty无法监听数组长度变化
4 defineProperty无法检测到对象属性的新增或删除,vue2使用this.$set/this.$delete来解决
2. Diff算法的提升
- 将一个模板分成由结构指令分隔的嵌套“块”,当我们更新块中的节点时,我们不再需要递归遍历DOM树 - 该块内的动态绑定可以在一个平面数组中跟踪。
- 检测模板中的静态节点、子树甚至数据对象,在生成的代码中将它们提升到渲染函数之外。
- 为每个具有动态绑定的元素生成一个优化标志,运行时将获取这些标志提示并采用专用的快速路径。
3. 更好的Tree-shaking
一些全局API改为按需引入
4. 更好的Typescript支持
1 vue3是用TypeScript编写的库,可以享受到自动的类型定义提示
2 支持TSX
运用层面
1. Composition API
混入(mixin) 将不再作为推荐使用,Composition API可以实现更灵活且无副作用的复用代码。
- setup()
- reactive、ref 与 toRefs
- 生命周期
- watch 与 watchEffect
…
2. Fragment
template中允许写多个根节点。
3. Teleport
可以将组件渲染的内容传送到任何指定的地方。
4. Suspense
异步请求组件。
参考:
https://juejin.cn/post/6940454764421316644
https://juejin.cn/post/6844904134303301645
https://juejin.cn/post/6976400439793172487
https://v3.vuejs.org/guide/composition-api-introduction.html#standalone-computed-properties
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HI DESPACITO!
评论