为什么去了解源码?

2023/11/29 vue3

去看源码、分析源码,从中得到作者的思路,在软件工程中相当于是在做一个逆向工程的事情。一个软件、一个代码文件,就算有文档也不能详细说明代码的细节,更何况很多时候还没有文档,只有一堆代码文件。

了解源码有哪些好处呢?

  • 对我们做业务项目来说
    • 写更少的 bug
    • 更快的调试项目代码
  • 对我们自身的编程提高
    • 参考优秀的设计思想
    • 学习一些代码技巧

平时项目不必做的多,但一定要对自己项目的设计原理、代码掌握清楚。笔者分析代码的主要还是归纳、演绎的方式,有目的地对源码的一方面进行分析,分析完达到目的为止,有时还需要画一下设计图作为辅助。

今天开始分析 vue3 的源码,下面是一张 vue3 项目打包图,vue3 和 vue2 都是通过 rollup 来打包的。

vue3图1

打包环境是在 node 环境下进行的,当用户在终端命令行窗口输入 npm run build,node 会执行全局 package.json 中的 node scripts/build.js,接着 build.js 会处理package.json 中的 buildOptions 属性等等,得到一份配置。然后 rollup 按照这份配置进行打包,最终输出对应的dist。这就是 vue3 整个打包流程了。

笔者现在还不熟悉画图设计,上图是用 StarUML 工具的包图画的,一个包代表一个文件夹、文件或是工具,虚箭头表示依赖关系(类似 A->B,表示 A 持有 B 的实例,A 向 B 发消息)。在画图过程中遇到的困难是,scripts、package.json、packages下的package.json、rollup 之间都会有依赖关系(包括很弱的依赖),如果把这些依赖都画上图就会变得很乱,更加不能表达清楚意思了。所以,决定以打包的主流程和强依赖为主去画图,最后才勉强得到上面这个图@_@。

更新时间: 2023/11/29 15:42:16