来源:
https://github.com/caarlos0/starcharts
使用:
直接打开3000端口即可,点生成即可
介绍:
这个项目就是将github上的这个项目,从他创建以来到现在有多少个人star(关注)生一个折线图,可视化显示项目的star趋势
go基础阶段作品,这个项目主要学习了go的几个主要标准库,例如http/net,os,time,embed
当然了里边用到了许多卡洛斯作者自己创建的特殊的包,例如:env等,这一部分暂不涉及学习,毕竟写这个项目主要是为了学习标准库的应用,以及过一遍一个项目大概流程
作品项目架构:
main.go:
just this one
这里主要是通过router,路由链接起来其他几个go程序里边的方法结构,再往下通过http向客户端请求,服务端响应,通过embed.FS这个变量将静态资源和go程序连接起来,关于这个我专门写了一篇博客,详细见: 打开本地端口,就是一个网页,从而实现生成星图…
config:
config.go
就定义一个config结构,为了获取github配置,例如例如token,打开端口,但是我不了解env,因为这是作者自己写的一个接口(应该,或者是一个库)
controller:
repo.go:
这个主要是实现了获取github信息,例如仓库token,仓库star数量等,和对应的时间,
并且生成星图的功能
index.go:
闻名思意,和index.html联系,用到了httperr这个作者自己写的库,主要实现的就是对http处理增加了一个错误返回,使其可以显示在html中
internal:
github:
github.go:
初始化,速率限制,github结构,获取token,val等
reposi.go:
获取仓库返回数据,获取权限,调用API检查速率限制
star.go:
没什么好说的,拿到一段时间的星星,最关键的数据,做了错误处理
roundrobin:
roundrobin.go:
就是通过这个go程序联系其他go程序,路由作用
static:
包含了html,css,图片和SVG这些静态资源,
其他:
go.mod
这个就是moudle,但是作者引了很多包,除了标准库这些还有pkg,redis当然我给他删除了因为没用到,当然还有其他的我不懂
Makefile
规定了那些需要先编译,那些需要后编译,知识浅浅的知道是干啥的
说明:
结尾说明:这个项目超过我期限的2天,因为真的是看不懂,太多引用了,只能把重点放在学习http/net embed,os,time库上,以及对项目的了解,能得到的参考资料几乎等于没有,所以学的过程中我问了很多同学,从哪里了解了moudle,makefile等知识,但是即便是现在我也没能对他完全了解,这也是不现实的,何况我是删掉了那些redis相关的。