Vue 2 即将成为过去
创始人
2024-05-10 04:45:43
0

自从 2020 年 9 月 18 日 Vue 3 正式发布以来,已经有两年多时间了,终于在 2022 年 2 月 7 日 Vue 作者发布了一则消息:Vue 3 将成为新的默认版本。与此同时,Vue 相关官方周边的核心库 latest 发布标签将指向其 Vue 3 的兼容版本。

另外,随着 Vue 2.7 的发布,Vue 2.7 已经成为 Vue 2.x 的最终次要版本。在这个版本之后,Vue 2 进入了 LTS(长期支持),并且将不再接收新功能。这意味着 Vue 2.x 将在 2023 年底结束其生命周期

可以预见:在不久的将来,Vue 2.x 将会逐步淡出江湖,Vue 3 将会成为代替 Vue 2 的主流框架。

Vue 3 作为一个全球最顶尖的前端框架之一,整体的思想理念、程序设计、细节的取舍、API 设计、项目的工程考量都是非常优秀的!通过对源码的阅读,不仅仅可以让我们快速建立起对 Vue 3 运行机制的深入了解,还可以从中学习到很多程序设计的宝贵经验和架构思想!

所以,让我们快人一步,现在就开始对 Vue 3 的深耕,去学习一下 Vue 3 的核心技术实现原理,以及一些相对于 Vue 2 的改变之处。

全面拥抱 Vue 3

Vue 3 整体的设计相对于 Vue 2.x 有着不小的变化,在开启 Vue 3 技术揭秘的旅途之前,我们先着重介绍几个相对于 Vue 2.x 而言较大的几个变化,这里的介绍不会深入到源码的细节,旨在帮助小伙伴们快速建立起对 Vue 3 的一些前置认知,更多的细节变化和设计原理我们将在接下来的课程中为大家渐进式地揭开面纱!

1. 源码组织上的变化

在 Vue 2 中,所有的源码都存在在 src 目录下:

Vue 3 相对于 Vue 2 使用 monorepo 的方式进行包管理,使用 monorepo 的管理方式,使得 Vue 3 源码模块职责显得特别地清晰明了,每个包独立负责一块核心功能的实现,方便开发和测试。如下图:

比如,compiler-core 专职负责与平台无关层的渲染器底层,对外提供统一调用函数,内部通过完整的测试用例保障功能的稳定性。而 compiler-dom 和 compiler-ssr 则依托于 compiler-core 分别实现浏览器和服务端侧的渲染器上层逻辑,模块核心职责清晰明了,提高了整体程序运行的健壮性!

2. 引入 Composition API

在 Vue 2.7 之前,我们去开发 Vue 应用,都是通过 datacomputedmethods……这样的选项分类的方式来实现一个组件的开发。其实这样对于没有大量状态逻辑维护、复用的组件来说,是比较直观的组织方式,但是一旦遇到需要大量维护、复用状态的组件来说,这无疑增加了维护的成本和风险。

组合式 API (Composition API) 是一系列 API 的集合,使我们可以使用函数而不是声明选项的方式书写 Vue 组件。通过下图我们可以清晰地看出来二者的区别

但 Composition API 也并不是“银弹”,它也有自己适合的场景,所以 Vue 3 也是在实现层面做到了兼容 Options API 的写法。相对而言,Composition API 更适用于大型的项目,因为大型项目可能会产生大量状态逻辑的维护,甚至跨组件的逻辑复用;而对于中小型项目来说,Options API 可以在你写代码时减少思考组织状态逻辑的方式,也是一种不错的选择。

3. 运作机制的变化

熟悉 Vue 2 源码的同学大致清楚 Vue 2的核心运作机制可以抽象为下图所示的样子:

Vue 3 则在底层实现中,摒弃了 Vue 2 的部分实现,采用全新的响应式模型进行重写。这里我根据 Vue 3 的运行机制,也简单画了一张 Vue 3 的宏观草图,如下所示:

可以粗略地看到:

  • 首先,之前通过 new Vue() 来创建 Vue 对象的方式已经变成了 createApp
  • 其次,在响应式部分也由原来的 Object.defineProperty 改成了现在的 Proxy API 实现;
  • 另外,针对响应式依赖收集的内容,在 Vue 2.x 版本中是收集了 Watcher,而到了 Vue 3 中则成了 effect

除了上面所说的这些变化外,Vue 3 不管是在编译时、还是在运行时都做了大量的性能优化。例如,在编译时,Vue 3 通过标记 /*#__PURE__*/ 来为打包工具提供良好的 Tree-Shaking机制,通过 静态提升 机制,避免了大量静态节点的重复渲染执行;在运行时,又通过批量队列更新机制优化了更新性能,通过 PatchFlags 和 dynamicChildren 进行了 diff 的靶向更新……

上面的内容有些不理解了?没关系,等等,这里先卖个关子。相信你一定可以在学习本小册的过程中,得到你的答案!

开启小册的前置准备

如果你已经迫不及待地想赶紧开始学习 Vue 3 的设计核心,请稍安勿躁,我们还需要做一些准备工作,以方便你在后续的学习中更容易理解文中的内容。

首先,本小册中所有关于 Vue 的源码所依托的版本是 3.2.45。然后你也可以去 GitHub 上 clone 下来 Vue 3 源码。

clone 下来后,我们可以简单看一下项目的目录结构:

├── packages              
│   ├── compiler-core     # 与平台无关的编译器实现的核心函数包
│   ├── compiler-dom      # 浏览器相关的编译器上层内容
│   ├── compiler-sfc      # 单文件组件的编译器
│   ├── compiler-ssr      # 服务端渲染相关的编译器实现
│   ├── global.d.ts       # ts 相关一些声明文件
│   ├── reactivity        # 响应式核心包
│   ├── runtime-core      # 与平台无关的渲染器相关的核心包
│   ├── runtime-dom       # 浏览器相关的渲染器部分
│   ├── runtime-test      # 渲染器测试相关代码
│   ├── server-renderer   # 服务端渲染相关的包
│   ├── sfc-playground    # 单文件组件演练场 
│   ├── shared            # 工具库相关
│   ├── size-check        # 检测代码体积相关
│   ├── template-explorer # 演示模板编译成渲染函数相关的包
│   └── vue               # 包含编译时和运行时的发布包

本小册介绍的核心内容主要分布在 compiler-corecompiler-domreactivity、 runtime-coreruntime-dom 这几个包中,这些也是 Vue 的核心

另外,在阅读过程中,你也可以一边看、一边自己调试,Vue 为我们提供了很多开发使用的示例,我们可以通过下面的命令来运行它:

$ npm run dev # 开启 vue dev 环境 watch
$ npm run serve # 启动 example 示例的服务器

接着,我们只需要访问 packages/vue/examples/** 中的示例就可以在线调试 Vue 代码了。

最后,让我们一起进入 Vue 3 的世界,探索其中的奥秘吧!

Vue 3 技术揭秘 - muwoo - 掘金小册渐进式揭秘 Vue 3 源码的设计过程和架构思想。「Vue 3 技术揭秘」由muwoo撰写,881人购买https://s.juejin.cn/ds/kyJYLn1/

相关内容

热门资讯

创维电视安卓系统2.3,回顾经... 你有没有发现家里的创维电视有点儿“老态龙钟”了?别急,别急,今天就来给你揭秘一下这款电视的“内心世界...
如何破解车载安卓系统,轻松解锁... 如何破解车载安卓系统:揭秘背后的技术与风险在当今这个数字化飞速发展的时代,汽车已经不仅仅是一种交通工...
安卓机上的windows系统,... 你有没有想过,把Windows系统的强大功能搬到安卓机上?想象那可是个让人眼前一亮的操作体验呢!今天...
非安卓10系统手机,探索非安卓... 你有没有想过,为什么有些人会选择非安卓10系统的手机呢?是不是觉得这有点奇怪?别急,今天就来带你一探...
手机图标制作安卓系统,手机图标... 你有没有想过,那些在手机屏幕上跳动的图标,其实都是精心设计出来的艺术品呢?没错,今天就要带你一探究竟...
安卓系统和鸿蒙系统谁大,谁才是... 你有没有想过,手机里的操作系统就像是一场无声的较量?今天,咱们就来聊聊这个话题:安卓系统和鸿蒙系统,...
bj40安卓系统,功能解析与使... 你有没有发现,最近你的BJ40越野车变得聪明多了?没错,它升级了安卓系统,简直就像给它装上了个智能大...
安卓系统硬件核心板,揭秘智能设... 你有没有想过,手机里的安卓系统其实就像是一个庞大的城市,而硬件核心板就是这座城市的核心区域?今天,就...
王者荣耀安卓系统转区ios系统... 你有没有想过,把你的王者荣耀账号从安卓系统转到iOS系统呢?这可不是一件小事,里面可是有大学问的哦!...
安卓系统的音游,节奏与音乐的完... 你有没有发现,手机里的游戏越来越好玩了?尤其是那些音游,简直让人停不下来!今天,就让我带你深入了解一...
安卓系统取消下方按键,探索全新... 你知道吗?最近安卓系统来了一次大变动,那就是取消了下方按键!这可真是让人眼前一亮,让我们一起来看看这...
安卓系统显示原理设置,从像素到... 你有没有发现,你的安卓手机屏幕上那些花花绿绿的图标和文字,其实背后有着一套神奇而又复杂的显示原理呢?...
平板安卓4.0系统下载,平板下... 你有没有想过,拥有一台运行着最新安卓4.0系统的平板电脑,那感觉简直就像拥有了未来的钥匙?想象流畅的...
安卓原生12系统下载,原生系统... 你有没有听说?安卓原生12系统终于来了!这款全新的操作系统,不仅带来了全新的视觉体验,还有一堆实用的...
安卓怎么下泼辣系统,安卓设备轻... 你有没有想过给你的安卓手机来个“大变身”?想象你的手机瞬间变成了一个泼辣的“女侠”,不仅个性十足,而...
安卓版小米系统下载,畅享智能生... 你有没有发现,最近手机圈里又掀起了一股热潮?没错,就是安卓版小米系统的下载。这款系统自从推出以来,就...
提取安卓系统自带软件,探索安卓... 你有没有想过,你的安卓手机里那些看似不起眼的自带软件,其实都是隐藏的宝藏呢?今天,就让我带你一探究竟...
安卓系统投屏到鸿蒙系统,鸿蒙系... 亲爱的读者们,你是否有过这样的体验:手里拿着安卓手机,却想在大屏幕的鸿蒙系统设备上展示内容?别急,今...
sony 电视安卓8.0系统,... 亲爱的读者们,你是否也和我一样,对科技产品有着浓厚的兴趣呢?今天,我要和你聊聊一个让我眼前一亮的话题...
安卓 替换系统下载,探索安卓系... 你有没有想过,你的安卓手机其实可以换换口味呢?没错,就是那个一直默默陪伴你的系统,今天就来带你一起探...