golang 框架 之 CHI

栏目: Go · 发布时间: 6年前

内容简介: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)
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

网络心理学

网络心理学

玛丽•艾肯 (Mary Aiken) / 中信出版社 / 2018-8-1 / CNY 58.00

《五十度灰》如何利用恋物心理,成为全球仅次于《圣经》的畅销读物? 为什么相对于亲朋好友,你更愿意向网络陌生人敞开心扉? 上网时总感觉时间飞逝,原来是网络的时间扭曲效应? 网络游戏中埋伏了哪些“上瘾”机关,暗中操控着你的行为? 为什么科技越发达,我们就越怕死? ...... 网络空间是一个巨大的兔子洞,里面集合了新奇、刺激、喜悦、痛苦、不安等各种元素。在日复一日的......一起来看看 《网络心理学》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试