共计 2498 个字符,预计需要花费 7 分钟才能阅读完成。
有幻想,有干货,微信搜寻 【大迁世界】 关注这个在凌晨还在刷碗的刷碗智。
本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,有一线大厂面试残缺考点、材料以及我的系列文章。
文本是翻译的,作者 Fotis Adamakis,他是 Vue.js 雅典会议的独特组织者,文中的第一人称指的是该大佬。
从最后引入 Vue 3 开始,曾经过来了 4 年多。通过屡次 RFC 的探讨,以及其余古代框架(包含 React 和 Svelte)的影响,Vue 可能曾经成为最弱小和最全面的框架,可能逐渐反对任何规模和架构的利用。
听起来很刺激,对吗?嗯,事实远非如此。从那时起,就产生了很多提早和降级的状况。只管 Vue 3 最近成为了新的默认版本,但很多重要的反对库还没有筹备好,甚至没有打算与两个版本兼容。这阐明很多代码库还停留在 Vue 2 上,迁徙到版本 3 的门路并不容易。
请不要误会我,Vue 3 十分棒。它可能是目前最好的框架了。但事实上,从第二版开始没有简略的迁徙门路,这是一个谬误,咱们不应该在将来反复。
Vue 2 的问题
Vue 始终被认为是一个提高的框架。选项 API 很容易了解,咱们能够学习并在须要时引入更简单的模式和库。小的学习曲线和良好的文档是大家喜爱它的起因。
另一方面,在将通用逻辑形象为 mixin 时,应用继承而不是组合的体系结构缺点造成了许多可伸缩性问题,并毁坏了洁净组件申明的许多准则。Vue3 引入组合 API 作为一种解决方案。
另一个重要的问题是对 typecript 的反对。当然,在 Vue 组件中编写 typescript 就像在 script
标签中增加 type="ts"
一样容易。但在模板和 store 里,反对是有问题的。
vue3 解决方案
齐全重写是一个改善框架内部结构的机会。Vue3 宽泛地应用了 Typescript,包含响应性机制在内的许多方面都从头开始。这使得 Vue 3 在数据包大小、初始渲染、更新和内存应用方面的性能失去了显著的改善。
此外,还减少了很多新的性能。
- Composition API
- 语法糖
<script setup>
- Fragments
- Emits 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 的迁徙有什么教训?请在评论中分享你的想法和倡议。
编辑中可能存在的 bug 没法实时晓得,预先为了解决这些 bug, 花了大量的工夫进行 log 调试,这边顺便给大家举荐一个好用的 BUG 监控工具 Fundebug。
作者:Chris 译者:小智 起源:medium
原文:https://fadamais.medium.com/v…
交换
有幻想,有干货,微信搜寻 【大迁世界】 关注这个在凌晨还在刷碗的刷碗智。
本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,有一线大厂面试残缺考点、材料以及我的系列文章。