前言
复制下崽ZY:https://www.666xit.com/3625/
原作者首先声明了他并没有贬低Vue3的意思。他认为Vue3是非常非常棒的框架,解决了Vue2中很多潜在问题,技术层面改善了开发人员的开发体验,并显著提高了性能。原作者主要的问题,是从Vue3突破性的改变以及周边生态圈未能及时跟上的角度,重点强调了迁移升级成本+风险较大。
关于升级成本问题:尤大也承认了Vue3升级体验并没有想象中的那么流畅,Vue4会吸取经验,做好平稳迭代。这一点本文会在下面详细说明。
接下来,我们针对原文中提到的观点逐一列举解读。
ps: 为了避免语言翻译差异问题,所有原作者和尤大的观点都是附上英语原文。
一、破坏性的api变更(Breaking changes)
- [Events API]的弃用让这个问题首当其冲。(straightforward like the depreciation of the Events API)。Vue实例再也不能作为事件总线做事件通信,
$on,$off,$once的彻底移除意味着之前所有有关代码都必须重新推翻重写,虽然有很好的插件工具让这件事变得没那么复杂,但是仍然会带来不小的迁移成本。 - 代码构建问题。 你会经常遇到用Vue2写法写出来的代码在构建(build) 失败或抛出警告。因为这些api写法在Vue3中已经被废弃。这问题在已存在的大型项目中的尤为突出(In an existing large-scale application built with Vue 2, you would probably use some of the deprecated or changed APIs)。下图展示了一部分Breaking changes,可以看到破坏性的api变更数确实很多:
二、颠覆式的设计模式(composition-api)
颠覆式的composition-api慢慢向面向函数思想转变,导致很多原有习惯于options-api的开发者反感Vue正在像react靠拢,没有坚持住Vue特色。它提出了一种新的基于函数的 Vue 组件编写方式,引起了Vue社区大量的争议和分裂,甚至将社区分隔为两种观点阵营针锋相对,最终导致了
三、生态系统(The ecosystem)
框架的真正力量来自社区和它周围的生态系统。(The true power of a framework comes from the community and the ecosystem around it.)
生态系统和框架本身一样重要。因为没有责任机制,在有争议的决定和在弃用功能的时候,很多框架周边的生态系统的许多贡献者会被迫离开,并导致许多库被放弃或者延迟更新。很多时候,我们没有办法做版本兼容时,我们往往只能把责任归咎于,开源库缺乏同理心和对大局的理解。