【Vue2 VS Vue3 】- 浅析

995 阅读2分钟

目录

  1. Vue2的局限性
  2. Vue2 - 跨组件重用代码的解决方法(不好用)
  3. 代码重用方法PK
  4. 如何使用CompositionAPI解决问题
  5. 代码层面区别:比如数据监听方式的实现
  6. ......

一、Vue2的局限性

  • 组件逻辑膨胀导致的可读性变差
  • 无法跨组件重用代码
  • Vue2对TS的支持有限

在传统的OptionsAPI中我们需要将逻辑分散到以下六个部分

OptionsAPI

-   components
-   props
-   data
-   computed
-   methods
-   lifecycle methods

这样会是我们编辑一个逻辑不得不在代码中反复横跳

二、Vue2 - 跨组件重用代码的解决方法(不好用)

  1. 混入mixin(有问题)
  2. 作用域插槽slot (缺点多)
  3. 高阶组件(太复杂)

三、代码重用方法PK

Vue2中的跨组件重用代码,我们大概会有四个选择。

3.1) Mixin - 混入

代码混入其实就是设计模式中的混合模式,缺点也非常明显。

可以理解为多重继承,简单的说就是一个人如何有两个父亲

❌无法避免属性名冲突 - 长鼻子随谁

❌继承关系不清晰

3.2)  Mixin Factory - 混入工厂

✅代码重用方便

✅继承关系清洗

3.3) ScopeSlots - 作用域插槽

  • ❌可读性不高
  • ❌配置复杂 - 需要再模板中进行配置
  • ❌性能低 - 每个插槽相当于一个实例

3.4) CompositionApi - 复合API

  • ✅代码量少
  • ✅没有引入新的语法,只是单纯函数
  • ✅异常灵活
  • ✅工具语法提示友好 - 因为是单纯函数所以 很容易实现语法提示、自动补偿

四、如何使用 Composition API解决问题

最佳的解决方法是将逻辑聚合就可以很好的代码可读性。

这就是我们的CompositionAPI语法能够实现的功能。CompositionAPI是一个完全可选的语法与原来的OptionAPI并没有冲突之处。他可以让我们将相同功能的代码组织在一起,而不需要散落到optionsAPI的各个角落。

五、  LifecycleHooks - 生命周期钩子

Vue2Vue3
beforeCreate❌setup(替代)
created❌setup(替代)
beforeMountonBeforeMount
mountedonMounted
beforeUpdateonBeforeUpdate
updatedonUpdated
beforeDestroyonBeforeUnmount
destroyedonUnmounted
errorCapturedonErrorCaptured
🎉onRenderTracked
🎉onRenderTriggered

六、 代码层面区别:比如数据监听方式的实现

image.png

参考

关注更多Vue2 VS Vue3 请查看下方链接

总结

  • Vue2到3 代码分散 -> 代码聚合
  • 跨组件重用代码通过Composition