文由Vue.js雅典大会协办方FotisAdamakis翻译,文中第一人称指大佬。自Vue3首次推出以来已经4年多了。经过多次RFC讨论,以及其他现代框架(包括React和Svelte)的影响,Vue可能已经成为最强大和最全面的框架,可以逐渐支持任何规模和架构的应用程序。听起来令人兴奋,对吧?好吧,远非如此。从那时起,出现了许多延误和退化。尽管Vue3最近成为新的默认版本,但许多重要的支持库还没有准备好,甚至没有计划与这两个版本兼容。这说明很多代码库还停留在Vue2上,迁移到版本3的道路并不平坦。不要误会我的意思,Vue3很棒。它可能是目前最好的框架。但从版本2开始没有简单的迁移路径这一事实是我们不应在未来重蹈覆辙的错误。Vue2的问题Vue一直被认为是一个渐进式框架。选项API易于理解,我们可以在需要时学习和引入更复杂的模式和库。小的学习曲线和良好的文档是人们喜欢它的原因。另一方面,在将公共逻辑抽象到mixins中时使用继承而不是组合的架构缺陷会造成许多可伸缩性问题,并破坏许多干净组件声明的原则。Vue3引入了CompositionAPI作为解决方案。另一个重要问题是对TypeScript的支持。当然,在Vue组件中编写typescript就像在script标签中添加type="ts"一样简单。但在模板和商店中,支持值得怀疑。完全重写vue3解决方案是一个改进框架内部结构的机会。Vue3广泛使用Typescript,包括反应机制在内的许多方面都是从头开始构建的。这导致Vue3在包大小、初始渲染、更新和内存使用方面有了显着的性能改进。此外,还增加了许多新功能。CompositionAPI语法糖FragmentsEmitsComponentOptionfrom@vue/runtime-core'screateRendererAPI可以创建自定义渲染器样式,可以绑定变量SFC的现在可以包含全局规则或只针对插槽内容规则的新功能Suspense提升了整体的开发体验,受到众多开发者的欢迎。争论的焦点是,这些功能中的大部分,包括合成API、传送、悬念等,在Vue2中已经可用,因此不能真正算作对框架的改进。破坏性变化的真正问题是有很多。其中一些很简单,例如事件API。Vue实例不能再用作事件总线,但有一些即插即用的解决方案,如mitt或tiny-emitter可以用作直接替代品。这需要一些工作时间,但可以在没有太大风险的情况下及时完成。另一方面,如果不进行小的或大的重构,则无法安全地进行某些更改。在使用Vue2构建的现有大型应用程序中,您可能会使用一些已弃用或更改的API。migrationbuild应该是两个版本之间的桥梁,但是有这么多不推荐使用的功能,它不太适合大型项目。此外,对于一些基本支持库的官方建议是迁移到不同的库,这进一步增加了复杂性。移动组件如此之多,即使迁移构建成功,工作量也会很大,这将需要更多时间来解决更大项目的技术债务。Vue一直是一个有意义的框架。您可以尝试猜测API应该如何工作,您可能是对的。Vue3不再是这种情况。一个例子是对基于函数的新Vue组件编写方式征求意见,得到了大量正面和负面的回应。无论您在这场辩论中的立场如何,社区分裂成两半都不是好兆头。文档在开发过程中,尤其是在新框架中,Google和StackOverflow是您最好的朋友。目前Vue2的答案占据了压倒性的优势,但是在Vue3中,很多API实现的原理都不一样,所以可能会造成一些混乱。生态一个框架有多强大,它的生态就有多强大。有争议的决定和不负责任的弃用功能驱使许多贡献者离开,导致许多图书馆被遗弃。但是,当你指责开源库没有跟上你的版本,而你没有给他们一个支持两个版本的可行方法时,这表明缺乏对大局的同理心和理解。框架的真正力量来自于它周围的社区和生态系统。在过去,如果你有幸在2015年左右写代码,你可能已经用上了当时最主流的框架AngularJS。迁移到Vue3看起来很像从AngularJS到Angular的过渡(版本1?2)。许多重大变化导致挫败感,最终Angular失去了对React和Vue的吸引力。如果你是一名全栈工程师,你可能熟悉大约10年前在Python生态系统中发生的相同情况。大约十年来,许多项目无法升级,因为许多核心库没有添加对Python3的支持,并且出现了仅支持Python3的新库。当然,后来的Python版本开始仅在版本3上添加新的和闪亮的功能,而这个烂摊子还没有真正结束。未来——这会再次发生吗?看起来前进的方向是倒退,将所有内容移植到迁移构建中,但损害已经造成,开发人员的满意度看起来不容忽视。有先见之明涉及框架是情理之中,但开发经验是框架的核心职责之一。Vue4应该考虑到整个生态系统并提供一个迁移路径,否则它将是最好的框架,没有人愿意使用。到目前为止,您对Vue3迁移的体验如何?请在评论中分享您的想法和建议。作者:Chris译者:小智来源:medium原文:https://fadamais.medium.com/vue-3-was-a-mitake-that-we-should-not-repeat-81cc65484954