​ 开发中使用过或者感兴趣的包。7 天从入门到放弃? 这个项目教你 7 天用 Go 从零实现 Web 框架

大家好,我是欧盆索思(opensource),每天为你带来优秀的开源项目!今天推荐一个 7 天用 Go 从零实现 Web 框架的开源项目。

先介绍一下作者的这个 7 天系列:

7 天能写什么呢?类似 Gin 的 Web 框架?类似 groupcache 的分布式缓存?或者一个简单的 Python 解释器?这是作者 极客兔兔 的解释。

今天推荐的这个 7 天系列就是用 Go 实现一个类似 Gin 的 Web 框架:Gee。项目地址:https://github.com/geektutu/7days-golang/tree/master/gee-web

img

Gee 框架

这个 7 天系列教程将使用 Go 语言实现一个简单的 Web 框架。作者第一次接触 Go 语言的 Web 框架是GinGin的代码总共是 14K,其中测试代码 9K,也就是说实际代码量只有 5K

时间关系,同时为了尽可能地简洁明了,这个框架中的很多部分实现的功能都很简单,但是尽可能地体现一个框架核心的设计原则。例如Router的设计,虽然支持的动态路由规则有限,但为了性能考虑匹配算法是用Trie树实现的,Router最重要的指标之一便是性能。从这个框架的源码,你会看到 Gin 的影子,作者参考了 Gin 的一些实现。

目录

作者的这一系列,不止是代码实现,同时配套有完整的文章教程。跟着一步步走,你可能就不会 7 天从入门到放弃了。

该系列的目录如下:

  • 第一天:前置知识(http.Handler 接口)[1],Code - Github[2]
  • 第二天:上下文设计(Context)[3],Code - Github[4]
  • 第三天:Tire 树路由(Router)[5],Code - Github[6]
  • 第四天:分组控制(Group)[7],Code - Github[8]
  • 第五天:中间件(Middleware)[9],Code - Github[10]
  • 第六天:HTML 模板(Template)[11],Code - Github[12]
  • 第七天:错误恢复(Panic Recover)[13],Code - Github[14]

希望你喜欢,阅读原文可以直达项目,给作者 Star 的同时,也给 欧盆索思 一个在看或转发吧!

参考资料

[1]前置知识(http.Handler 接口): https://geektutu.com/post/gee-day1.html[2]Code - Github: https://github.com/geektutu/7days-golang/tree/master/gee-web/day1-http-base[3]上下文设计(Context): https://geektutu.com/post/gee-day2.html[4]Code - Github: https://github.com/geektutu/7days-golang/tree/master/gee-web/day2-context[5]Tire 树路由(Router): https://geektutu.com/post/gee-day3.html[6]Code - Github: https://github.com/geektutu/7days-golang/tree/master/gee-web/day3-router[7]分组控制(Group): https://geektutu.com/post/gee-day4.html[8]Code - Github: https://github.com/geektutu/7days-golang/tree/master/gee-web/day4-group[9]中间件(Middleware): https://geektutu.com/post/gee-day5.html[10]Code - Github: https://github.com/geektutu/7days-golang/tree/master/gee-web/day5-middleware[11]HTML 模板(Template): https://geektutu.com/post/gee-day6.html[12]Code - Github: https://github.com/geektutu/7days-golang/tree/master/gee-web/day6-template[13]错误恢复(Panic Recover): https://geektutu.com/post/gee-day7.html[14]Code - Github: https://github.com/geektutu/7days-golang/tree/master/gee-web/day7-panic-recover