GitHub的练手项目,都是别人写好的,怎么自己从零开始学习?

您所在的位置:网站首页 框架不能用 GitHub的练手项目,都是别人写好的,怎么自己从零开始学习?

GitHub的练手项目,都是别人写好的,怎么自己从零开始学习?

#GitHub的练手项目,都是别人写好的,怎么自己从零开始学习?| 来源: 网络整理| 查看: 265

(附送传智健康项目笔记+源码)本文将会从怎么读源码,读源码技巧、学习别人的项目作为出发点分享。

一、读什么样的源码

看阶段,跟看书学习一样,开始的时候肯定是看例题。

项目学习阶段,如果还没有自己跑通过任何一个项目,那建议你就看我们黑马程序员公开的项目课程就可以了。

进阶学习阶段,更应该读一些经典的内容,比如JDK源码,Spring框架源码等等。有了一定知识储备之后,我们就可以看一些经典的开源项目了。

二、阅读源码有什么技巧 2.1 初学者源码阅读技巧

初学者可以在gith上面选择一些小型有意思的项目入手,比如实现了某个功能或者组件这样的项目,不要看大而全的框架,有了一定的经验之后再尝试看框架源码。

另外搭配一些工具阅读会更好,推荐向大家一些工具: Octotree,浏览器扩展,在github上面显示代码树,对你了解整个项目结构有着非常大的帮助webstorm,这个看个人喜好吧,笔者比较喜欢WS,主要是里面的工具比较全面,比如支持typescript、babel等等一些前端经常用到的工具SourceTree,git可视化客户端工具,如果你喜欢从第一个commit开始看,那么这个工具对你比较有帮助,看看快速了解到每个版本提交的内容以及源码变更记录,笔者以前比较喜欢用这个,但是后面WS有自带的可视化工具之后就没用过了。 2.2 框架源码怎么阅读

尽管有了一定经验之后读类似Spring框架的源码也会有很多问题,期间会各种debug,打几百个断点都有可能,需要一遍又一遍的跟踪跟进,从服务器启动开始。

源码要读的东西和内容实在是太多了,大家可以找到自己重点关注的内容。比如Spring的Bean定位加载解析注册、bean的实例化两块内容。

另外笨办法就是看书/看视频,很多课程都是基于源码拆解来讲的,从中大家可以知道一些关键点,关键流程,自己如果在过程中有问题的话,那么就可以带着疑问去阅读源码。读时间久了,这些问题就迎刃而解了!

课程推荐:

SSM 框架 SpringSpringMVCMyBatis icon-default.png?t=N176https://www.zhihu.com/education/video-course/1483149993993678849

其次就是看博客,实在有一些不理解的内容,就上网查博客,然后再回头来读源码。

笔记推荐:

Spring的IOC原理spring IOC源码分析(1) - 看看写写,记录所学,权当笔记のspring ioc原理(看完后大家可以自己写一个spring)spring源码研究之IoC容器在web容器中初始化过程Java开发中的23种设计模式详解(转) - maowang - 博客园Spring中的设计模式web.xml 中的listener、 filter、servlet 加载顺序及其详解 - JesseV - 博客园Spring 容器(Spring 的上下文) - Knowvin的个人空间spring框架在什么地方真正实例化了Bean一分钟掌握Spring 中bean 的生命周期!Spring IOC - 依赖注入(Bean实例化进程)Spring面试问答Top 25spring中bean初始化过程 - 默默君的个人空间Spring与SpringMVC的容器关系分析 三、如何看项目源码

1、在准备看一个开源项目源码的时候,需要先了解项目的背景、功能以及相应的API。这步就是为了理解整个项目的功能做准备的,也是为了后面重点看哪些模块做准备的。

2、查看项目的REAME.md文件。有些项目把设计文档和架构图放到md文件上面,这样可以让我们对项目有一定的宏观认识。比如:immer

3、查看项目的整体文件结构。比如下面提到一些重点需要查看的文件:

package.json,可以从这个文件看到整个项目的入口文件、开发/测试/发布编译的各种命令,也可以了解到项目的依赖库、工具以及框架等等。webpack/gulp/rollup配置文件,从这个文件里面可以看到项目整体的工具配置,也包含入口文件以及编译之后的代码文件,以及一些配置项的功能

4、知道一些默认莫名的文件规则,比如:

dist,表示编译之后的源文件src,源代码文件index.xx,一般会用来作为前端的入口文件app.xx、server.xx,一般会用来做后端的入口文件static,静态文件,前端项目一般都会用来作为给浏览器运行的入口文件test,测试用例文件夹e2e,端对端测试unit,单元测试…......

这期间哪怕你遇到一些文件你不知道有什么用,有2个方式可以了解到

1、直接用google搜该文件名,往往能找到相关答案,比如.eslintrc.js:

2、进去看文件内容,一般会有注释,如果都没有的话说明这个文件往往不是很重要,可以先忽略。

Google查找这个开源框架的官方介绍,了解以下信息

框架有几个模块模块的作用模块之间的联系每个模块的核心类(在阅读源码的过程中,着重看核心类)

对哪个模块感兴趣就去写个小demo,先了解一下这个模块的具体作用。

debug进入看具体实现。(这里面可以充分使用IDEA的调试功能)

第一遍是走马观花,简略看一下调用逻辑,都用了哪些类;第二遍需有重点地debug,看看这些类担任了架构图里的哪些功能,使用了哪些设计模式。第三遍debug,把主要类的调用时序图以及类图结构画出来,对着时序图分析调用流程

注意的点:

阅读源码时,最好画出时序图和类图

注释是一手资料,好的注释往往已经说明了它们的设计原理和使用场景

四、上手

做完前面的准备工作后,这时候你应该对这个项目有一个大致的了解,这里你可以先简单写写你对这个项目的一些疑惑,请注意!!!这里的问题很重要,因为看源码必须要带着问题去看,不然你会摸不到方向。至于这里的问题,你可以先列个清单,比如mpvue

小程序是不支持npm引入库文件的,但是mpvue支持,是怎么做到的呢?小程序和vue都有自己的生命周期,框架是怎么去兼容?mpvue是怎么样让小程序支持单文件组件(.vue)…..

接着我可以开始正式的看源码了,这里容我说句题外话。有人可能喜欢先从第一个commit看起,因为第一个commit的源码会比较简单易懂,但是我并不喜欢这样,因为第一个commit的代码往往跟现有的文档差距比较大(除非这个项目比较新),无法了解到整体的结构,而且第一个commit的代码可能跟最新的代码在架构上面有着翻天覆地的变化,反而做了一些无用功。

1、入口文件,几乎所有的项目都会有一个入口文件,其实你做上面的准备工作之后,基本你都能找到入口文件,无非就是从2个方面入手

package.json,因为是入口文件,一般都会使用默认命名,比如index.xx app.xx之类。

2、工具的配置文件,比如webpack的entry字段,gulp.src执行的文件路径等等

以模块为单元开始阅读,带着你上面准备的问题,抽丝剥茧、层层深入。这里分享一个小技巧,可以先Fork下一个项目,在阅读的过程中不断加上自己的注释和理解,一个好的项目往往在结构上面都是很清晰,例如

好的源码是可以从命名上面都能直接给读者一些信息,方便阅读。

3、当你深入读到某一块源码不理解,先试着在网上找找有没有相关的资料学习下,实在找不到可以先标记下放着,等你看到后面再回过头来看不理解的地方或者会茅塞顿开。

五、技巧

1、在你阅读的过程中,如果发现一些代码片段很精妙的可以记录一下,或者尝试下有没有更好的方式去实现,也许你就成了这个项目contributors了

2、当你不了解某个模块的作用时,你可以去看看测试用例,特别是单元测试(unit),测试用例包含对输入输出的校验,从这里可以快速了解到模块相关的作用

3、要学会给项目打断点,在边读边运行项目源码的过程中,通过断点输出当前执行的堆栈信息对你理解项目也是有很大的帮助

总结

学习项目源码不是一蹴而就,往往周期比较长,最好的就是能够将项目Fork下来,单独准备好一份笔记,慢慢去研究、记录看源码过程中的一些心得,到最后看完再回过头来你能说出它的架构和设计,那么我觉得这个学习是有意义,所以我认为阅读源码的终究目标是了解项目,最终能实现它。

一般常用方法就是:

让项目跑起来,太重要了!学会自己调试,不调试基本可以等于白看打印之日以及修改log4j日志级别查看调用栈全文搜索大胆猜测再验证 【传智健康项目笔记】 黑马项目公开:传智健康项目概述和环境搭建黑马项目公开:传智健康项目功能需求和源码黑马项目公开:传智健康项目预约管理-检查组管理黑马项目公开:传智健康项目预约/套餐管理黑马项目公开:传智健康项目设置体检预约最大数量黑马项目公开:传智健康移动端开发-体健预约黑马项目公开:传智健康移动端开发(2)黑马项目公开:移动端开发-体检预约黑马项目公开【传智健康】移动端开发-手机快速登录、权限控制黑马项目公开【传智健康】权限控制、图形报表黑马项目公开【传智健康】图形报表、POI报表


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3