Skip to content

Instantly share code, notes, and snippets.

@morrxy
Created April 27, 2017 06:04
Show Gist options
  • Select an option

  • Save morrxy/baf941739bafb9280236ea34462903ab to your computer and use it in GitHub Desktop.

Select an option

Save morrxy/baf941739bafb9280236ea34462903ab to your computer and use it in GitHub Desktop.
[go语言框架选择问题] #tags: golang

go框架选择观点与分类

因为go的标准库net/http功能非常全,所以关于go语言的框架使用有三种观点:

  1. 不用框架:

    因为go的标准库net/http功能非常全。只需要用一个完成路由和路由参数的库,加上海量的能满足任何需求(比如session什么的)的中间件就行了。目的是代码里始终使用net/http,保持最大的兼容性。不需要为了符合框架去写一些奇怪的shim程序。

  2. 轻量级框架:

    因为内置了一些功能,而且不需要手写net/http,开发效率比较高。感觉如果只需要实现api,微服务等,使用轻量级框架比较合适。

  3. 全功能框架:

    类似Ruby的ROR或python的Django。功能全,有方便的开发,部署工具。感觉适合用来做前后端不分离的网站项目。做cms感觉也合适。

全功能型

候选列表:

优点:

  • 包含web开发常用的各种功能和工具,能提高开发效率,减少代码维护成本。
  • 不需要自己找需要的包和工具。
  • 不用研究怎么使用第三方包和工具。
  • 国人开发,有中文文档

缺点:

  • 性能比轻量级框架低
  • 请求处理函数,中间件函数都必须按框架规定的方式写。与go的标准库不一样。导致不容易扩展和调整。
  • 无法优选需要的组件

这类框架以beego为代表,如果选这类的,推荐beego。

轻量级框架

候选列表:

优点:

  • 性能极高
  • 扩展性好
  • 可以优选需要的组件

缺点:

  • 框架没有的功能需要自己选
  • 维护成本比全功能的高点

这类框架的代表主要是gin和echo,根据 https://github.com/diyan/go-web-framework-comparsion 里的比较情况,echo的请求处理函数是强类型,支持中间件,支持统一的错误处理等因素。性能上两者差不多,echo好像更高点。推荐echo。

参考链接

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment