Vue3 VS Vue2 之源码篇

418 阅读2分钟

前言

对比学习法:就是用对比两种事物的异同来进行学习,相同部分可以进行归纳,从而产生通用方法或者理论。

心路历程

由于最近几个月使用了vue3+vite2进行开发,全方位体验框架带来的“快”感,就想做些什么,让小伙伴们也能体验一下;

于是我翻阅了大部分技术社区类似文章,发现该领域的分享早已被大量文章覆盖,难...;

为了让小伙伴们重新找回“快”感,我决定通过对比学习-求同存异的方式助各位重拾初心;

一、代码管理

vue2.png vue3.png

  • 通过项目结构对比,可以看出 Vue3 文件结构更清晰,更方便阅读;
  • 因为 Vue3 采用 monorepo 代码管理方式,根据功能将不同的模块拆分到 package 目录下面不同的子目录中;每个 package 有各自的 API、类型定义和测试。
  • 这样使得模块拆分更细化,职责划分更明确,模块之间的依赖关系也更加明确,开发人员也更容易阅读、理解和更改所有模块源码,提高代码的可维护性;

二、Flow vs TypeScript

FlowTypeScript
2014年Facebook开发2012年Microsoft开发
Flow的主要特点是精确、实时反馈、易于集成、可靠性、速度、高吞吐量、低延迟、类型推断、易于理解的Javascript模式Typescript的主要功能是编译时类型检查、枚举类型、接口、名称空间、类型注释、类型擦除、类型推断、泛型、元组
实用程序大小为68.4 MB实用程序大小为42.4 MB
React的最佳选择,很容易与Babel和现有的基础设施集成Angular2或更高版本为最佳选择
不支持封装自typeScript2.0以来,它支持使用公共、私有、受保护的修饰符和只读进行封装
仅对React提供支持支持Vue、Angular和Facebook自己的React等主要前端框架
支持的库很少支持的库很多
除了提供静态类型外,它还为我们提供了广泛的过程间分析,并加深了对代码的理解除了提供静态类型外,它还为我们提供了很棒的语言服务和适当的工具、包括代码重构、导航和自动完成
易上手,适合轻量级项目有一定的门框,适合中、大型项目

Vue3 抛弃 Flow 转而采用 TypeScript 重构了整个项目,两方面原因:

1、Flow 对于一些复杂场景类型的检查,支持得并不好且 Flow 团队的烂尾

2、TypeScript 提供了更好的类型检查,能支持复杂的类型推导;

最后的话

以上,如果对你有用的话,不妨点赞收藏关注一下,谢谢 🙏,还有后续连载...