内容简介:golang 的 http框架已经有很多,究其原因:go 的net/http 已经做了大部分工作,封装一个框架的工作量,没有那么的大。不过呢,林子大了鸟也就多了,部分框架的代码质量实在不敢恭维,另有一些框架则绑定了一堆东西,完全跟 清爽简洁的风格 背道而驰,用起来总有一种 笨重 的感觉!chi 也是一个 http 框架,不过这货是不同的。
1,特性
golang 的 http框架已经有很多,究其原因:go 的net/http 已经做了大部分工作,封装一个框架的工作量,没有那么的大。
不过呢,林子大了鸟也就多了,部分框架的代码质量实在不敢恭维,另有一些框架则绑定了一堆东西,完全跟 清爽简洁的风格 背道而驰,用起来总有一种 笨重 的感觉!
chi 也是一个 http 框架,不过这货是不同的。
**用这个框架,别人看你代码可能会怀疑你没用框架! **
其特点: 只做核心的事情 rest api 快(路由快,累赘少) 分组路由 **完全只用 net/http + 标准库实现!** 清爽(代码清爽,体积清爽) 常见功能用中间件搞,可拔插
2,为啥快
路由算法用的是 前缀树,最快的索引算法比哈希表都快!
真.轻量级,代码真的很少,没那么多弯弯绕绕。
只用 net/http, 标准库 再加上 高质量的代码。
3,可扩展性好
jwt、Timeout、RealIP 等众多中间件,随用随取。
厉害的是:因为其handler完全兼容 net/http,所以 社区所有兼容net/http 的中间件都能拿来直接用!
4,关于其轻量级
极致的简洁高效,同时就会缺少一些不那么常用的但又会用到的功能;这时候对比其他框架,会发现这个CHI,功能略少。
不过,即使不考虑其高效,这是小缺点的同时,也是小优点。不天生绑定,起手式就更加轻便,需要的时候再加,也有更多的选择;可以灵活的择其优者而从之。
4,有多快
BenchmarkChi_Param 3000000 607 ns/op 432 B/op 3 allocs/op BenchmarkChi_Param5 2000000 935 ns/op 432 B/op 3 allocs/op BenchmarkChi_Param20 1000000 1944 ns/op 432 B/op 3 allocs/op BenchmarkChi_ParamWrite 2000000 664 ns/op 432 B/op 3 allocs/op BenchmarkChi_GithubStatic 2000000 627 ns/op 432 B/op 3 allocs/op BenchmarkChi_GithubParam 2000000 847 ns/op 432 B/op 3 allocs/op BenchmarkChi_GithubAll 10000 175556 ns/op 87700 B/op 609 allocs/op BenchmarkChi_GPlusStatic 3000000 566 ns/op 432 B/op 3 allocs/op BenchmarkChi_GPlusParam 2000000 652 ns/op 432 B/op 3 allocs/op BenchmarkChi_GPlus2Params 2000000 767 ns/op 432 B/op 3 allocs/op BenchmarkChi_GPlusAll 200000 9794 ns/op 5616 B/op 39 allocs/op BenchmarkChi_ParseStatic 3000000 590 ns/op 432 B/op 3 allocs/op BenchmarkChi_ParseParam 2000000 656 ns/op 432 B/op 3 allocs/op BenchmarkChi_Parse2Params 2000000 715 ns/op 432 B/op 3 allocs/op BenchmarkChi_ParseAll 100000 18045 ns/op 11232 B/op 78 allocs/op BenchmarkChi_StaticAll 10000 108871 ns/op 67827 B/op 471 allocs/op
5,一个小例子
package main import ( "net/http" "github.com/go-chi/chi" ) func main() { r := chi.NewRouter() r.Get("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("welcome")) }) http.ListenAndServe(":3000", r) }
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 基于Google MVVM框架的baseMVVM框架
- Spring 框架是怎么出生的(二):重构提炼出框架
- Spring 框架是怎么出生的(二):重构提炼出框架
- Genesis框架从入门到精通(7): 框架的过滤器
- 如何打造自己的POC框架-Pocsuite3-框架篇
- 如何打造自己的PoC框架-Pocsuite3-框架篇
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。