golang 框架 之 CHI

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

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

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

查看所有标签

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

JavaScript

JavaScript

Douglas Crockford / Yahoo Press / 2008-5 / GBP 23.99

Most programming languages contain good and bad parts, but JavaScript has more than its share of the bad, having been developed and released in a hurry before it could be refined. This authoritative b......一起来看看 《JavaScript》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具