如题:如何有效学习开源项目代码?
一般来说分两种情况,一是带着问题去看开源代码,二是完全从零开始,学习开源项目的思路(甚至是为了面试)。
第一种情况,遇到问题的时候会去看源码。比如我在网上找换肤方案,有个less.js
,按照官网的步骤,最后报错了,然后我很好奇为什么会报错,于是去看了它的源码。怎么看的呢?就是从报错的地方直接打断点进去,找到对应的源码。大概知道问题原因后,又会比较好奇这个方案整体是怎么实现的。于是就从入口去看整体的代码,主要功能是如何实现的。我之前回答过一个问题,当时就是遇到问题了,我临时去看了axios
的源码,找到了问题。
链接:自以为理解了宏任务与微任务,结果...为什么同步代码中的alert阻止了网络请求,宏任务中的却不行?
第二种情况就是现在很多人看vue、react
源码的一种方式。在实际使用框架的过程中,往往不会涉及那么深的东西,但是你不去了解更深的原理,其实你对这个框架也就只能停留在最浅显的用的阶段。对于这种框架级别的源码,其实难度会大很多,因为整体架构有时候就比较复杂了,如果你直接去看github仓库,有点无从下手的感觉,你说你先看哪部分好呢?框架级别的可以推荐先从一些大佬写的mini浓缩版开始看,了解大概的架构和原理,比如mini vue等。通过这些浓缩的项目,你可以直接看很多关键技术的具体实现,比如reactive
是如何实现的,nextTick
是如何实现的...然后梳理一个整体的结构图,哪些模块负责哪些功能,最终这个框架就能成功跑起来了。当你进阶了之后,再去看完整的开源代码,或许就能有自己的心得和理解了。
已参与 「极客观点」 ,欢迎正在阅读的你也加入。
如果你不知道你为什么要读这个项目的源码,或者明确知道你想要从这个项目的源码中获得什么的时候,读源码只是在浪费人生。
虽然我不否认读源码可以提升自己的编程水平,但是硬啃源码的投入远比你会收获的多得多得多。
已参与 「极客观点」 ,欢迎正在阅读的你也加入。
阅读源码:
已参与 「极客观点」 ,欢迎正在阅读的你也加入。
必须看源码的话:
已参与 「极客观点」 ,欢迎正在阅读的你也加入。
“有效”这个很难定义,如果它跟你的目标相挂钩,如果是你是要实现某个功能,只需要了解相关API,如果你是要定制开发或者面试需求,你需要了解相关源码。不然只读源码,并不是性价比高的选择。
已参与 「极客观点」 ,欢迎正在阅读的你也加入。
如果希望高效,我觉得最应该做的是就是要明确当前自身的能力,是否能看懂这个,一定不要刻意寻找酷的项目或者说复杂的项目,从简单的项目看即可。这样也对自己的信心有提升,不至于一起步就挫折。
已参与 「极客观点」 ,欢迎正在阅读的你也加入。
个人认为看源代码并不是一种高效的学习方式.很多人因为面试会问源码,或者看到某些博主说研究源码很厉害就去学源码, 我感觉是个误区.
我建议学习源码的方式是, 基础打牢, 然后真正有需要的时候, 翻文档的时候不经意就会去看源码. 如果有需求要修改, 自然而然就会去涉及部分源码.然后根据需求重点的去看源码.就算是面试也不是让你看书一样把源码从头看到尾的.
已参与 「极客观点」 ,欢迎正在阅读的你也加入。
理清脉络,这东西主要是干嘛的, 然后你自己会怎么设计, 与开源的又有什么不一样, 作者有啥让你眼前一亮的想法, 基本就能看明白了
已参与 「极客观点」 ,欢迎正在阅读的你也加入。
源码太多,浩如烟海,直接看没有目的性是不行的。
最好是能找到核心代码,或者找mini实现版本,如mini-vue这样的。
已参与 「极客观点」 ,欢迎正在阅读的你也加入。
最好是在自己用第三方开源插件或者组件时使用;比如前端端的element-ui,后端的海豚调度
大数据的from-create,至少或多或少都有业务创新的地方
已参与 「极客观点」 ,欢迎正在阅读的你也加入。
源码这些,得自己去看,去解读,或者根据官方的一些文档去学习,我们知道了这些原理后,对于程序的整体把控力,哪里出问题的地方会更加明确,理解源码可以让程序员更加深入的了解自己所使用的工具类的原理。开发起来更加稳健。
已参与 「极客观点」 ,欢迎正在阅读的你也加入。