• 尤雨溪对Vue3的现状和未来,以及一些失误的反思与总结
  • 发布于 2个月前
  • 750 热度
    0 评论
  • pckillers
  • 0 粉丝 50 篇博客
  •   

前言

昨晚看了尤大的演讲,总结了一下。

Vue2 面对的问题

代码架构:Vue2 源码整体的代码架构比较粗糙、旧

性能优化空间:Vue2 的编译器能力优先,急需提升
Option API: 维护起来比较困难

浏览器版本: Vue2 支持到 IE9,不可能一直支持 IE9 这么旧的浏览器

Vue3 的目标
Vue3 的目标其实就是为了解决 Vue2 面对的问题。
代码架构: 拥抱 TS,重新设计模块,提高可维护性
性能优化: 虚拟DOM算法重构以及提升编译器的编译能力,优化组件生成的性能
Composition API: 维护起来比较方便,逻辑更紧凑
语法最低要求 ES2015+ ,标志着不再支持低版本浏览器


Vue3 遇到的挑战

在开发 Vue3 的时候遇到了一些挑战,主要遇到的挑战有:
1.怎么结合优化算法和编译器去寻求性能突破点?
2.Composition API 如何设计更加有利于开发维护?
3.Vue3 诞生后,周边的生态配置,如何去跟上脚步?(比如路由、状态管理等)


开发Vue3过程的失误与反思

尤大对于开发 Vue 过程中的一些失误,进行反思,虚心听取建议。

太多微小的破坏性改动
单独的一些小改动其实不难处理的,但是如果所有改动凑在一起,那么复杂度是指数型增长的,因为可能每一个小改动互相都关系着,有一种“牵一发而动全身”的感觉。

尤大针对此失误给出的经验是:
1.不要一次性上太多破坏性更新,而是一点一点上,分批发布
2.破坏性更新的发布要遵循 deprecate -> opt-ion -> remove 的周期,也就是比如你想废弃一个 API,不能说下个版本上的时候直接废弃掉,而是需要给开发者一个过度时间

低估了对生态中依赖的影响
在改动或删除某些 API 时,优先是考虑应用层代码的影响,但是一些大型依赖库其实会出问题(例如nuxt,vuetify)。还有一个问题就是,开发者喜欢去用 Vue3 的私有 API ,但是这类 API 改动是比较大的,所以会导致开发者的项目出问题。尤大总结的经验就是,在做这些改动更新时,优先要考虑对这些大型依赖库的影响,并且引导开发者不要去用私有 API。

发布节奏的处理
简而言之就是,当时 Vue3 的一些功能还没健全情况下,就发布了 Vue3,导致很多开发者对 Vue3 的第一印象不太好,期待值大大降低。
尤大总结经验:第一印象很重要,不发布半成品!!!

做得对的事情
尤大总结了开发 Vue3 中做的很好的地方:
1.拥抱 TS,大大提升可维护性
2.坚持 Composition API,提高可维护性
3.逻辑复用做的很好,比如 Vueuse 的出现

4.对开发体验持续投入,比如开发出了 Vite、完善 Vue3 文档、发布 Volar


Vue3 越做越强了 & 生态!

下载量 & 占比
尤大贴出了 Vue3 的下载量:
周下载量:215w,过去一年增长 73.4%
占比例:49.7%

Nuxt3
Nuxt3 体验越来越优秀了!

组件库越来越多
Vue3 生态越来越成熟了!最好的反映就是,组件库越来越多了!PC、移动端、SSR 的组件库都有,很齐全~

原生开发

3D 开发

未来期望
短期 & 中期
要稳定过渡,短期内避免发布不符合当前开发范式的 API,做一些不影响开发者现阶段开发的改进

长期
正在与 TC39 做沟通,努力推进 Signals 的提案,让它变成 JavaScript 原生的一部分

用户评论