内容提要
尤雨溪在VueConf回顾Vue 2到3升级教训:一次发布过多破坏性变更,应逐步弃用并保留旧功能;低估生态库适配成本,导致Nuxt等升级滞后,现用自动化CI测试下游兼容并限制内部API;过早发布核心版而生态未就绪,应先备齐生态、收集反馈。做对的是采用TypeScript、组合式API和投资开发者体验(Vite、Volar)。Vue 3已达成性能、类型、扩展性目标,采用率近50%。
延伸解读
破坏性变更的渐进式策略
尤雨溪反思Vue 3发布时一次性推出过多微小破坏性变更,导致复杂度指数级增长。未来将采用逐步弃用原则:先保持旧功能可用,再引入可选新特性,最终在后续版本移除废弃特性。这种分阶段变更策略借鉴了Angular和Ember的做法,旨在避免同时发布大量破坏性变更,降低开发者升级负担。
生态库适配与自动化测试
Vue团队低估了生态库适配Vue 3的工作量,导致Nuxt等主要库升级滞后。为此,Vue建立了自动化持续集成系统,自动测试核心变更与上下游依赖库的兼容性,已集成超过15个项目。同时,Vue禁止生态库使用内部API,并从类型定义中移除非公开API,以减少升级障碍。
发布时机与反馈收集
Vue 3核心模块过早发布,而生态未就绪,给早期使用者带来困惑。尤雨溪承认,大版本发布应优先确保一切准备就绪,而非匆忙发布。未来将更主动地与生态库维护者合作,在发布前收集反馈并推进升级工作,避免类似问题。
技术决策的长期价值
Vue 3采用TypeScript和组合式API被证明是正确的。TypeScript提升了代码可维护性,组合式API则满足了用户构建更复杂应用的可扩展性需求,并催生了VueUse等社区工具。此外,对开发者体验的投资孕育了Vite和Volar,这些工具已超越Vue生态,惠及更广泛的Web开发领域。
Q&A
Vue 3 发布时犯了哪些错误?
尤雨溪总结了三个错误:1. 一次发布太多微小但破坏性的变更,导致复杂性指数级增长;2. 低估了生态库适配 Vue 3 的成本,导致 Nuxt 等主要库升级滞后;3. 过早发布核心版而生态系统未就绪,给早期使用者带来困惑。
Vue 团队未来会如何避免破坏性变更?
未来将采用逐步弃用的周期性原则:首先保持原有功能可用,然后引入新特性的可选阶段,允许用户自主选择是否采用,最终在未来版本中移除废弃特性。维护者将在不同版本之间采取分阶段的变更策略,避免一次性发布大量破坏性变更。
Vue 3 如何解决生态库适配问题?
Vue 采用了自动化持续集成系统,自动测试核心变更与上下游依赖库的兼容性,已集成超过15个项目。同时,Vue 禁止生态库作者使用内部 API,并从类型定义中移除非公开 API,以防止生态库依赖内部行为。
Vue 3 做对了哪些事情?
Vue 3 做对了三件事:1. 采用 TypeScript,提高了代码可维护性;2. 引入组合式 API,支持更复杂的场景和可扩展性;3. 投资开发者体验,催生了 Vite 和 Volar 等工具,惠及整个生态。
组合式 API 为什么被引入?
组合式 API 是为了适应不断变化的用户群体和行业需求,提供更好的可扩展性,支持更大规模的单页面应用,同时在尽可能保留 Vue 用户友好性的前提下解决新需求带来的问题。
Vue 3 目前的市场表现如何?
Vue 3 的下载量已接近 50%,采用率在过去一年几乎翻了一番。随着对 Vue 2 的支持结束,Vue 3 实现了更好的性能、类型支持、可扩展性和开发体验的目标。