如何更精准的在 Github 上搜索开源库?你需要这些技巧!

正文共: 2468字 8图

预计阅读时间: 7分钟

一、前言

在日常工作中,我们并不推荐去重复造轮子,通常我们会去搜索一些稳定的第三方开源库来使用。而 Github 中,开源的那些代码库,就是一个非常宝贵的资源,很多大型稳定的开源项目,都被托管在 Github 之上,这些项目一旦被开源,经过广大开发者的贡献之后,其实很多已经趋于稳定,靠谱的开源库已经很难发现重大 Bug。但是在 Github 上托管的开源项目非常之多,最简单的搜索方式就是在搜索框中,输入我们要搜索的关键字。这在有明确目标的前提下,将非常的高效,但是有时候我们并不能完整的确定。如何在这一大片资源中,找到我们需要的,就是需要技巧的了。本文就这个话题,展开讨论,看看如何高效的在 Github 上,搜索我们需要的开源项目。

二、搜索技巧

2.1 搜索结果先来看看,当我们直接在 Github 上,搜索项目的时候,出现的效果。

如图所示,这里我搜索的是Glide,对于一些优秀的开源项目,一般比较靠前的搜索结果里,就可以搜索出我们想要的项目。在这个页面,如果想要赛选出搜索结果,可以在右侧选择 Languages 来选择语言,例如我这里搜索的 Glide ,明显就是想要 Java 的开源库,所以选择 Java 就好了。而如果想要在搜索结果中,进行排序,可以点击 Sort 来选择,默认是 Best Match ,表示一个最佳匹配的结果。

Sort中,可以通过 start 、fork、updated 几个指标进行单独排序,一般我们使用 Most starts(按 start 数,降序排序)或者Most forks(按 fork 数,降序排序),就可以了。通常,这些选择之后,就已经可以精准的找到我们需要的开源库了。假如,还是不确定,可以考虑使用高级搜索(Advanced search),来进行搜索,在搜索结果的右上角,有快捷入口可以点击。2.2 Advanced Search在搜索结果页,就有 Advanced Search 的快捷入口,如果你没有找到,你可以直接进入:https://github.com/search/advanced假如普通的搜索方式,满足不了你的需要,那么 Advanced Search 就一定是你想要的。在 Advanced Search 中,你可以最大限度的设定搜索的条件,例如:作者是谁,来自哪个 repositories ,start 和 fork 数的范围等等,非常的全面。

在 Advanced search 的最上面,有一个搜索框,可以在这里填写关键字,然后在下面选择筛选的条件。从上面的例子中,可以看到,当你选择筛选条件之后,搜索框中,同步也会修改搜索的内容,而这些内容是遵循 Github 搜索语法的。举个例子,在 Repositories Options 中,你可以设置一些 start 和 fork 数的范围。

可以看到,对应的输入框,其实已经将提示做的很好了, 标识 0~100 的范围内, 标识最少要大于 1000 ,这些都非常的好理解,你可以根据需求在这里配置。举个例子,假如我需要搜索一个图片加载库,我搜索关键字 "Image loader" ,并且要求 start 数要大于 1000,最终配置完成的结果就是。这样的一个搜索语句,是可以直接在 Github 的搜索框中生效的,如果熟悉这些语法,就不需要依赖 Advanced Search 这个页面了。这里推荐几个常用的语法,其实更多的我自己也记不住,如果忘了,点开 Advanced Search 就可以了,毕竟是个熟能生巧的事情。

starts: 限定 start 数,例如 。

forks:限定 forks 数,例如,。

user:限定作者,例如,。

license:限定开源协议,例如,。

topic:限定标签,例如,。

更多使用技巧,推荐直接查阅官方文档,或者在 Advanced Search 页面中多试试。https://help.github.com/categories/searching-for-information-on-github/2.3 Topic 搜索还有一个 Topic 搜索的使用技巧,我觉得也非常有用,可以单独拿出来说说。对于开源库,都是为了解决具体问题,例如访问网络、加载图片等等,所以会为其加上不同的 topic 来做为一个标签的形式,对开源库进行标记。

对于 Glide 而言,它的 Topic 就是如上图所示的这些。这些 Topic 都是可以点击的,例如我想继续看看同样被 标记过的开源项目,直接点击 就可以了,这样筛选出来的库,可能也能解决加载 图的问题。GitHub 还专门提供了一个页面,展示目前流行的 Topic:https://github.com/topics。

三、小结

本文知识提点了一些 Github 上,可以使用的常用搜索技巧,能更快的帮你找到你需要的开源库。一些高级技巧确实不常用过一段时间就忘记了,不过还好有 Advanced Search 页面,可以帮我们快速的找到我们需要的筛选条件。对于知识,有时候知道如何找到它,比掌握它更加重要。

你还有什么关于 Github 搜索的小技巧,可以在留言区留言,我们一起讨论一下。

本文来自企鹅号 - 承香墨影媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端黑板报

插件化思维

用过构建工具的同学都知道,grunt, webpack, gulp 都支持插件开发。后端框架比如 egg koa 都支持插件机制拓展,前端页面也有许多可拓展性的...

1442
来自专栏JAVA高级架构

微服务架构组件分析

服务描述:服务调用首先解决的问题就是服务如何对外描述。 常用的服务描述方式包括 RESTful API、XML 配置以及 IDL 文件三种。

1004
来自专栏恰同学骚年

NoSQL初探之人人都爱Redis:(1)Redis简介与简单安装

  随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经显得力不从心,暴露了...

1012
来自专栏java一日一条

Nginx引入线程池 性能提升9倍

正如我们所知,NGINX采用了异步、事件驱动的方法来处理连接。这种处理方式无需(像使用传统架构的服务器一样)为每个请求创建额外的专用进程或者线程,而是在一个工作...

581
来自专栏Python

计算机基础之计算机硬件系统

一.计算机硬件系统概述 所谓计算机硬件系统,就是指构成计算机看得见的,摸得着的实际物理设备。 常见的计算机硬件组成主要由下图各部件组成: ? 现代计算机的结构更...

2105
来自专栏Java进阶架构师

纯手写实现一个高可用的RPC

在实际后台服务开发中,比如订单服务(开发者A负责)需要调用商品服务(开发者B负责),那么开发者B会和A约定调用API,以接口的形式提供给A。通常都是B把API上...

1176
来自专栏腾讯Bugly的专栏

手Q Android缓存监控与优化实践

死锁问题对产品的影响是巨大的,那么是否会有效的方法能够监控Android应用的死锁呢?

67312
来自专栏上善若水

S006SELinux(SEAndroid)是个什么呀

SEAndroid 是一套安全机制,实现的主要目的是为了是Android系统更安全。 SELinux是被设计为一个灵活的可配置的MAC机制。 SEAndro...

1244
来自专栏子勰随笔

SDK设计心得之接口设计

1.2K9
来自专栏MongoDB中文社区

MongoDB 3.6中的新功能 (1) - 发展的速度

New in MongoDB 3.6. What’s New in MongoDB 3.6. Part 1 – Speed to Develo

1061

扫码关注云+社区