就在前两天,一篇对立Vue2晋级到Vue3的文章在vue官方社区引起了热议。(原文链接:Vue 3 was a mistake that we should not repeat)

这篇文章从实践运用角度动身,分析了Vue2Vue3在真实项目中实操晋级的痛点,提出了一个对立的声响:Vue3的晋级是一个过错的选择

在一片热议中,乃至尤大都出来亲自解释并承认了一些问题。本文罗列了一些原文中说到的观念以及尤大的回复。期望能给各位读者在实践项目晋级时,供应更实践全面的参看。

前语

原作者首要声清楚他并没有下降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改动数的确许多:

Vue2晋级到Vue3终究是不是一个正确的选择?(尤雨溪亲自回复解读)

二、推翻式的规划方式(composition-api)

推翻式的composition-api逐渐向面向函数思想改动,导致许多原有习惯于options-api的开发者反感Vue正在像react靠拢,没有坚持住Vue特征。它提出了一种新的基于函数的 Vue 组件编写方式,引起了Vue社区大量的争议和割裂,乃至将社区分隔为两种观念阵营针锋相对,终究导致了Vue 最黑暗的一天工作。这很令人懊丧。

(the Request for Comment for the new function-based way of writing Vue components which had an overwhelming amount of responses, both positive and negative.No matter where you stand in this argument splitting the community in half is never a good sign and led to Vue’s Darkest Day and a lot of people getting discouraged over this.)

三、生态体系(The ecosystem)

结构的真实力气来自社区和它周围的生态体系。(The true power of a framework comes from the community and the ecosystem around it.)

生态体系和结构本身相同重要。因为没有职责机制,在有争议的决议和在弃用功用的时分,许多结构周边的生态体系的许多贡献者会被逼脱离,并导致许多库被扔掉或许延迟更新。许多时分,我们没有办法做版别兼容时,我们往往只能把职责归咎于,开源库缺少同理心和对全局的了解。 (Controversial decisions and no accountability while deprecating features drove many contributors away and resulted in many libraries being abandoned. But blaming open source libraries for delays when you don’t give them a feasible way to support both versions shows a lack of empathy and lack of understanding of the bigger picture)

四、文档体系(Documentation)

在我们的日常开发中,尤其是在运用结构时,我们会遇到林林总总的问题,这时我们经常需求google或许问答社区作为帮手,但是现在关于Vue搜索出来的成果几乎满是Vue2的成果,这也很难不令人伤心。

(During development, especially with a new framework, Google and StackOverflow are your best friends. Currently, Vue 2 answers are dominating the results which might cause confusion and frustration since many things don’t work the same in Vue 3.)

五、过往案例(The past)

Vue2到Vue3的晋级,有一点像angular1到angular2的晋级

过渡到 Vue 3 看起来很像从AngularJS过渡到Angular版别 1⇒ 2)。大量的延迟和严峻更改导致了挫败感,终究 Angular 失去了对 React 和 Vue 的吸引力。

(The transition to Vue 3 looks a lot like the transition fromAngularJStoAngular(Version 1⇒ 2). A lot of delays and breaking changes led to frustration and eventually Angular lost traction to React and Vue.)

五、结论(Apinion)

  1. 看起来跋涉的道路其实是倒退。(It looks like the way forward is going backwards)
  2. 开发满意度看起来并不好。(development satisfaction is not looking good)
    Vue2晋级到Vue3终究是不是一个正确的选择?(尤雨溪亲自回复解读)

上图可以看到Vue已经有被svelte超越的趋势。

  1. Vue4应该考虑到整个生态体系并供应搬家途径,不然它将成为没有人乐意运用的最佳结构。(Vue 4 should take into account the whole ecosystem and provide a migration path or it will be the best framework that no one will want to use.)

六、尤大的回复:

1.关于破坏性的api:

这根本不是真的。

当我们进行版别切换时,全部核心库和东西都与这两个版别兼容(或为 Vue 2/3 支撑供应单独的版别)。

实践上阻止晋级的依靠都是第三方,首要是 NuxtVuetify

2.推翻式的规划方式:

实践运用过 Composition API + < script setup> 的用户在真是开发中的反馈十分活跃,证明这是一个有价值的补充,现在他们中的许多人更喜欢它而不是 Options API。

我们当然可以更好地处理新 API 的引进,但只是因为存在争议,并不意味着它是过错的或许不必要的。实践上,引进大的、新的主意的行为,势必会让那些喜欢呆在舒适区的人感到不安,但假设我们迎合这种心态,就永久不会取得真实的开展。

3.关于周边生态和文档体系:

虽然我们的确创造了 Vue CLI、Vuex、Vetur 和 VuePress 的新替代品,但它们本身都有适用于 Vue 3 的版别。这是夸大现实,不尊重团队为供应这些东西的 Vue 3 兼容版别所做的极力。

4.关于和angular的过往对比:

  • 没有可比性,不能拿Vue晋级和angularjs -> angular做对比。
  • Angular 和 AngularJS 是根本不同的结构。几乎没有同享交集,除了完全重写之外没有实践的搬家途径。
  • 另一方面,有许多出产 Vue 2 运用程序成功搬家到 Vue 3 的案例。很容易吗,的确不是,但是他们都搬家成功了。

5.关于晋级问题:

我们赞同,Vue3晋级领会并没有梦想中的那么流畅。Vue 将随着汲取的阅历不断开展,我们肯定不打算在未来的Vue4中,进行这样的破坏性严峻晋级。

(We appreciate constructive feedback and agree that the Vue 3 upgrade experience isn’t as smooth as it could be. Vue will keep evolving with the lessons learned, and we definitely do not plan to have disruptive major upgrades like this in the future.)

6.关于这篇文章结论:

在我看来,这篇文章全体上描绘的画面比实践要黑暗(dark)得多,有不必要的夸大,在少数情况下是完全不正确的信息。我期望至少能纠正我在其他议论中指出的一些现实过错。

七、总结评论:

上述就是原作者提出来的问题以及尤大的回复,应该可以给各位正在考虑晋级的小伙伴一点真实的参看定见。

假设这篇文章能给您带来一点点的参看或许协助的话,麻烦移动下鼠标点个❤️赞❤️吧!您的点赞会给笔者带来更新的持续动力!

我正在参与技术社区创作者签约方案招募活动,点击链接报名投稿。