文档是译者的,译者Fotis Adamakis, 他是 Vue.js斯巴达会议的共同发起者,该文的第三人称指的是该元老。
从起初导入Vue 3早已开始,早已过去了4年多。经过数次RFC的探讨,以及其他现代构架(主要包括React和Svelte)的影响,Vue 可能将早已正式成为最强悍和最全面的构架,能够逐步全力支持任何规模和构架的应用领域。
听起来很刺激,对吗?嗯,历史事实绝非如此。从那以后,就发生了很多延后和降班的情况。尽管Vue 3前段时间正式成为了捷伊预设版,但很多关键的全力支持库还没准备好,甚至没计划与两个版相容。这说明很多标识符库还逗留在Vue 2上,北迁到版3的方向并不难。
请不要误会我,Vue 3非常棒。它可能将是目前最合适的构架了。但历史实际上,从第二版早已开始没简单的北迁方向,这是两个严重错误,他们不如果在未来数次重复。
Vue 2的难题
Vue一直被认为是两个不断进步的构架。快捷键API很难认知,他们可以自学并在需要时导入更繁杂的商业模式和库。小的TypeScript和较好的文件格式是大家讨厌它的原因。
另一各方面,在将通用型方法论抽象化为mixin时,采用承继而不是女团的数据库系统瑕疵造成了很多可扩展性难题,并毁坏了整洁模块新闻稿的很多准则。Vue3 导入组合API 作为一种软件系统。
另两个关键的难题是对typecript的全力支持。当然,在Vue模块中撰写typescript就像在script条码中加进type=”ts”一样难。但在模版和 store 里,全力支持是有难题的。
vue3 软件系统
完全改写是两个明显改善构架在结构上的机会。Vue3 广泛地采用了Typescript,主要包括积极响应性监督机制其中的很多各方面都Cubzac。这使得Vue 3在报文大小不一、如上所述图形、更新和缓存采用各方面的操控性得到了明显的明显改善。
此外,还增加了很多捷伊功能。
Composition API句法糖 <script setup>FragmentsEmits Component Option来自@vue/runtime-core的createRenderer API可以创建自定义图形器style 里面可以绑定变量SFC的<style scoped>现在可以主要包括全局规则或只针对插槽内容的规则Suspense新功能明显改善了整体的开发体验,欢迎很多开发都的追捧。争论的焦点是,其中大部分功能,主要包括女团API、teleport、 suspense 等,在Vue 2中早已都能用了,所以它们不能真正算作构架的改进。
真正的难题
毁坏的性变化,有很多。其中一些很简单,比如Events API。Vue实例不能再用作事件总线,但有即插即用的软件系统,如 mitt 或 tiny-emitter,可以用作直接替代。这需要有一定工作时间,但可以及时完成,没太多风险。
另一各方面,有些变化不能安全地进行,也不能不进行小规模或大规模的重构。在两个用Vue 2构建的现有大型应用领域中,你可能将会采用一些被废弃或改变的API。
北迁构建如果是两个版之间的桥梁,但由于有这么多被废弃的功能,它对大型项目并不适用。此外,官方对一些基本的全力支持库的建议是北迁到另两个不同的库,这进一步增加了繁杂性。由于有这么多的移动模块,即使北迁构建成功,也需要大量的工作,这对大项目来需要有更多的时间用来解决技术债务。
不需要的东西
Vue始终是两个有意义的构架。你可以试着猜测两个API如果如何工作,你很可能将是对的。Vue 3不再是这种情况。
两个例子是关于捷伊基于函数的Vue模块撰写方式的意见征集,有大量的回应,主要包括正面和负面的。不管你在这场争论中的立场如何,将社区分成两半绝不是两个好兆头。
文件格式
在开发过程中,特别是在两个捷伊构架中,谷歌和StackOverflow是你最合适的朋友。目前,Vue 2的答案占据了压倒性的优势,但在Vue 3中,很多API实现的原理都不一样了,因此可能将会造成一定的混乱。
生态
两个构架有多强悍,它的生态系统就有多强悍。有争议的决定和不负责任的废弃功能驱使很多贡献者离开,导致很多库被放弃。但是,当你没给开源库两个可行的方法来全力支持两个版的时候,就指责他们没跟上你的版时,这表明你缺乏同情心和对大局的认知。
两个构架的真正力量来自于它周围的社区和生态系统。
过去
如果你有幸在2015年前后写标识符,你有可能将会采用当时最主流的构架AngularJS。
转到 Vue 3的看起来很像从 AngularJS 到 Angular(版1⇒2)的过渡。大量的毁坏性的变化导致了挫败感,最终Angular失去了对React和Vue的吸引力。
如果你是两个全栈工程师,你可能将熟悉大约10年前在Python生态系统中发生的同样情况。在大约十年的时间里,很多项目无法升级,因为很多核心库没增加对Python 3的全力支持,而出现的新库只全力支持Python 3。当然,后来的Python版早已开始只在版3上加进捷伊和闪亮的功能,这种混乱的情况还没真正结束。
未来–这种情况会再次发生吗?
看起来前进的方向是向后退,把所有的东西都移植到北迁构建中,但是损害早已造成了,开发满意度看起来并不乐观,不能忽视。有远见地让构架参与进来是合理的,但开发经验是构架的核心职责之一。Vue 4如果考虑到整个生态系统,并提供两个北迁方向,否则它将正式成为没人愿意采用的最佳构架。
到目前为止,你对Vue 3的北迁有什么经验?请在评论中分享你的想法和建议。
译者:Chris 译者:
https://fadamais.medium.com/vue-3-was-a-mitake-that-we-should-not-repeat-81cc65484954