本文是关于 golang Web 框架信息的学习和汇总;
valyala/fasthttpvalyala/fasthttpjulienschmidt/httprouter/hellohello worldvalyala/fasthttpnet/httpvalyala/fasthttpnet/http
是一个高效的 Go 语言 full-stack Web 开发框架,其思路完全来自 Java 的 Play Framework ;
特点:
- 热编译
- 简单可选
- 同步(每个请求都创建自己的 goroutine 来处理)
beego 是一个用 Go 开发的应用框架,思路来自于 tornado ,路由设计来源于 Sinatra ,作者是 build-web-application-with-golang 电子书的作者;
支持如下特性:
- MVC
- REST
- 智能路由
- 日志调试
- 配置管理
- 模板自动渲染
- layout 设计
- 中间件插入逻辑
- 方便的 JSON/XML 服务
Golanger 是一个轻量级的 Web 应用框架,使用 Go 语言编写。
net/http
Golanger 约定的命名规则:
国人开发的 Go web MVC 框架,仿照 ASP.NET MVC ,简单而且强大。
基本功能:
- mvc (Lightweight model)
- 路由
- 多模板引擎和布局
- 简单数据库 API
- 表单验证
- 控制器或 Action 的过滤
- 中间件
- 最早的 Go 语言 Web 框架,借鉴的 java 和 scala 语言的 play 框架的很多想法;
- 带有和 play 一样的毛病,舍弃了原有的标准完全自己来;revel 完全不理 Go 标准库的一套,全部是自己的概念;
- 国内最火热的、比较中型的框架;
- 除了基础的 MVC 结构外,还带有 Cache ,ORM ,Session 等多个库的支持;
- 用的人很多,文档也很齐全(更新不太及时),社区和 Q 群也很活跃;
英文原文:这里
This suite aims to compare the public API of varIoUs Go web frameworks and routers.
本文从 COMmunitY 和 BEST FEATURE 两个方面对如下 web 框架进行了比较:
net/http
此文是 jochasinga/requests 作者用于说明为何不要使用框架的战斗檄文;有助于从相反的角度审视一下框架使用问题;
推荐阅读!
Checklist for (Not) Using a Framework
Frameworks are especially tempting for newcomers considering most of the time they have a task and/or requirements to work on and not just an interest and time to invest in Go. Here is a simple checklist for you to run down before you consider using a framework:
- You understand interfaces in Go thoroughly like @rob_pike does.
- You understand context thoroughly or want to deal with it instead of responses and requests.
- You intend to build a simple REST web service which might only handle JSON tasks of which a framework makes simple.
- You work alone or it is unlikely someone will work on your code in the future.
- You do not often consult online docs and resources when programming.
- You do not intend to use other packages outside of a framework’s functionalities.
If most of your answers are false,then
Stick to the bare Metal until you don’t have to.
net/http
本文给出了如何返回 JSON,XML 数据,以及如何渲染模板内容等问题的代码示例程序。