这篇文章主要介绍下笔者看源码的一些心得和方式,因为笔者看的大部分是前端项目,固然也看过一些其它领域的源码,不过很少,因此内容主要仍是之前端项目为主前端
查看项目总体的文件结构。好比下面提到一些重点须要查看的文件vue
知道一些默认命名的文件规则,好比webpack
src,源代码文件git
test,测试用例文件夹github
这期间哪怕你遇到一些文件你不知道有什么用,有2个方式能够了解到web
作完前面的准备工做后,这时候你应该对这个项目有一个大体的了解,这里你能够先简单写写你对这个项目的一些疑惑,请注意!!!这里的问题很重要,由于看源码必需要带着问题去看,否则你会摸不到方向。至于这里的问题,你能够先列个清单,好比mpvuechrome
.....typescript
接着我能够开始正式的看源码了,这里容我说句题外话。有人可能喜欢先从第一个commit看起,由于第一个commit的源码会比较简单易懂,可是我并不喜欢这样,由于第一个commit的代码每每跟现有的文档差距比较大(除非这个项目比较新),没法了解到总体的结构,并且第一个commit的代码可能跟最新的代码在架构上面有着翻天覆地的变化,反而作了一些无用功。npm
1.入口文件,几乎全部的项目都会有一个入口文件,其实你作上面的准备工做以后,基本你都能找到入口文件,无非就是从2个方面入手json
2.以模块为单元开始阅读,带着你上面准备的问题,抽丝剥茧、层层深刻。这里分享一个小技巧,能够先Fork下一个项目,在阅读的过程当中不断加上本身的注释和理解,一个好的项目每每在结构上面都是很清晰,例如
好的源码是能够从命名上面都能直接给读者一些信息,方便阅读。
3.当你深刻读到某一块源码不理解,先试着在网上找找有没有相关的资料学习下,实在找不到能够先标记下放着,等你看到后面再回过头来看不理解的地方或者会茅塞顿开。
1.在你阅读的过程当中,若是发现一些代码片断很精妙的能够记录一下,或者尝试下有没有更好的方式去实现,也许你就成了这个项目contributors了
2.当你不了解某个模块的做用时,你能够去看看测试用例,特别是单元测试(unit),测试用例包含对输入输出的校验,从这里能够快速了解到模块相关的做用
3.要学会给项目打断点,在边读边运行项目源码的过程当中,经过断点输出当前执行的堆栈信息对你理解项目也是有很大的帮助
初学者在github上面阅读源码的时候能够先从一些小的项目入手,好比实现了某个功能或者组件这样的项目,先不要看一些大而全的框架,比较容易上手,当你积累了必定的经验后再尝试下看框架的源码。
另外搭配一些工具来阅读或者会更好,笔者推荐一些工具给你们
学习项目源码不是一蹴而就,每每周期比较长,最好的就是可以将项目Fork下来,单独准备好一份笔记,慢慢去研究、记录看源码过程当中的一些心得,到最后看完再回过头来你能说出它的架构和设计,那么我以为这个学习是有意义,因此我认为阅读源码的终究目标是了解项目,最终能实现它