大纲

开源项目的组成部分

如何搜索

按照 name 搜索

按照 README 来搜索

按照 dein 搜索

总结

开源项目的组成部分

如何搜索

按照 name 搜索

按照 README 来搜索

按照 dein 搜索

按照 name 搜索

按照 README 来搜索

按照 dein 搜索

总结

很多的小伙伴,经常会有这样的困惑,我看了很多技术的学习文档、书籍、甚至视频,我想动手实践,于是我打开了GitHub,想找个开源项目,进行学习,获取项目实战经验。这个时候很多小伙伴就会面临这样的问题:“我不会搜啊,我该怎么找呀?”,最终只能放弃。相信看完这篇文章,你就可以学会如何精准地在GitHub搜索项目。

一、Java项目的组成

在讲清楚之前呢,我们先来了解一下一个开源项目有哪些组成部分:

name: 项目名

deion: 项目的简要描述

项目的源码

README.md: 项目的详细情况的介绍

name: 项目名

deion: 项目的简要描述

项目的源码

README.md: 项目的详细情况的介绍

那么除了这些要素之外,项目本身的 star 数和 fork 数,也是评判一个开源项目是否火热的标准,这同时也是一个很重要的搜索标准。另外我们也要注意观察这个项目的最近更新日期,因为项目越活跃,那么它的更新日期也更加频繁。

以上要素就是我们在进行搜索的时候要注意的一些关键点。

二、如何搜索

那我们到底如何搜索呢?

假设我们现在要搜索React ,相信大部分小伙伴都是直接在搜索框里输入:“React”,然后一回车,你就会发现情况像下面这样:

搜索结果会显示非常多的开源项目,简直让你应接不暇,无从下手,很多小伙伴搜到这一步就放弃了,因为项目太多了,根本找不到如何找到自己感兴趣的开源项目,所以这样搜索非常的不准确。所以我们来学习一下稍微精确一点的搜索方法。

2.1按name搜索

搜索项目名 里面包含React 的项目:

in:name React

得到如下结果:

可以看到,这些搜索结果都是项目名里面带有“React”关键字的项目,但是项目数量依旧很多。

现在我们来约束一下

比如我再精确到项目的star数大于5000+:

in:name React stars:> 5000

结果是这样的:

搜索结果瞬间精确了很多,现在只有114个项目可供选择。 当然我们一般不会把star数设置得这么高,一般设置个1000就差不多了。

同理,我们也可以按照fork的数量来进行搜索:

in:name React stars:> 5000forks:> 3000

你会发现,结果越来越精确!

2.2 按redeme搜索

搜索README.md 里面包含React 的项目:

in:readme React

结果有这么多,那么我们再限制一下它的star 数和fork 数:in:readme React stars:> 3000forks:> 3000

搜索结果一下子精确到了90个。这个时候你再去选择项目,就会变得容易很多。

2.3 按照dein搜索

假设我们现在要学习微服务 的项目,我们搜索项目描述(deion) 里面包含微服务 的项目:

in:deion 微服务

结果有这么多,那我们接着增加一些筛选条件:in:deion 微服务 language:python

language:python 的意思是我们把语言限制为 python ,我们来看看结果如何:

搜索结果精确了很多。

假如在这些项目里面,我们想要找到最近才更新的项目,意思是更新时间就在最近,我们可以这样:

in:deion 微服务 language:python pushed:> 2020- 01- 01

pushed:>2020-01-01 的意思是我们把项目的最后更新时间限制到2020-01-01,我们来看看结果如何:

搜索结果只有8个了,这几个项目就属于更新比较活跃的项目,这下再也不纠结了。

三、总结

好,我们来总结一下。我们想要进行精准搜索,无非就是增加筛选条件。

in:name xxx // 按照项目名搜索

in:readme xxx // 按照README搜索

in:deion xxx // 按照deion搜索

in:name xxx // 按照项目名搜索

in:readme xxx // 按照README搜索

in:deion xxx // 按照deion搜索

那么在这里面呢,我们又可以增加筛选条件

stars:>xxx // stars数大于xxx

forks:>3000 // forks数大于xxx

language:xxx // 编程语言是xxx

pushed:>YYYY-MM-DD // 最后更新时间大于YYYY-MM-DD

stars:>xxx // stars数大于xxx

forks:>3000 // forks数大于xxx

language:xxx // 编程语言是xxx

pushed:>YYYY-MM-DD // 最后更新时间大于YYYY-MM-DD