goGo开源项目以及技术分享

分享我的第一个 GO 开源项目(xujiajun/goroute

2018-10-30  本文已影响268人  xujiajun

分享我的第一个 GO 开源项目( xujiajun/gorouter ),一个简单高性能的 router,和著名的 julienschmidt/httprouter 差不多快,且支持正则。很方便写 RESTful APIs 或者组建你自己的 web 框架。

项目由来

一开始学习 golang 的时候,我是从学习 go 写 web 应用,自然而然需要一个 web 框架或者 web 路由器。

找到这个 julienschmidt/httprouter (有几千 star 吧,截止今天 10 月 30 号,有 7900+star ),

使用了下,发现一般功能有了,但是看了他的 import 库,不支持正则,想改他的代码,发现各种 if,嵌套 walk 有种 bad smell 的感觉,还是放弃。我又试用了另一款著名的路由器 gorilla/mux (也有几千 star 吧,截止今天 10 月 30 号,有 7000+star ),测了下功能比 julienschmidt/httprouter 强大,但是性能差太多。具体见我的 benchmarks。

于是我决定自己写一个,一来学习下 go,二来也能解决下这个问题。我给自己的目标:

0、简单

1、测试覆盖率 90%以上,

2、支持基本的路由功能,

3、支持正则

4、性能要高

5、文档要完善

6、原生 go 实现,不要第三方库

项目地址

https://github.com/xujiajun/gorouter

项目原理

用了数据结构压缩 Trie

Features:

Fast - see benchmarks

URL parameters

Regex parameters

Routes groups

Custom NotFoundHandler

Custom PanicHandler

Middleware Chain Support

Serve Static Files

Pattern Rule Familiar

HTTP Method Get、Post、Delete、Put、Patch Support

No external dependencies (just Go stdlib)

项目情况

目前项目已经提交给awesome-go了,已经被收录了,也算给 Go 社区贡献自己小小的力量。希望大家用得上。

代码覆盖率 100%。

examples 里面含有完整例子,方便学习使用,如编写中间件、路由组、路由正则匹配等。

README 用英文写的,已经完成差不多了,中文如有必要,我再补上。我建议大家看英文

最后,最重要的是欢迎大家给我 star ! 提 issues !提交 PR !和我交流!

谢谢关注!后面还有更多 Go 开源作品分享给大家

上一篇下一篇

猜你喜欢

热点阅读