5大热门基于go语言的web框架,别再只知道springmvc

这篇具有很好参考价值的文章主要介绍了5大热门基于go语言的web框架,别再只知道springmvc。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


公众号: MCNU云原生,文章首发地,欢迎微信搜索关注,更多干货,第一时间掌握!

Spring MVC在Java web领域中首屈一指,而作为云原生时代的标准语言之一,Go语言自然也衍生出来不少优秀的web框架。今天给大家分享5个流行的基于Go语言的web框架,他们有什么区别,应该如何选择呢?别着急,往下看。

Gin

项目名称:gin-gonic/gin

项目Star数:69.2K

首先介绍的是Gin框架,它是一个轻量级的Web框架,具有快速的路由和中间件引擎,基于Go语言开发,以其简洁高效的设计和出色的性能在开发领域备受推崇。

go web框架,Go,golang,前端,开发语言

Gin应该是目前最受欢迎的go web框架了,它虽然轻量级,但是该有的功能一点也不含糊,而且性能非常的高,它具有类似 Martini (一个Go的经典web框架,因为已经不再维护,这里不展开讲)的 API,具有更好的性能——速度提高了 40 倍。以下是Gin的一些主要的功能:

  1. 路由和中间件支持:Gin提供了灵活的路由功能,可以方便地定义URL路由和处理器函数。同时,Gin还支持中间件,用于在请求到达处理器函数之前或之后执行一些额外的逻辑,如身份验证、日志记录等。
  2. 快速的请求处理:Gin采用了高性能的路由引擎,能够处理大量的并发请求。其使用了基于Radix树的路由匹配算法,具有较低的内存消耗和快速的匹配速度。
  3. 参数绑定和验证:Gin提供了强大的参数绑定和验证功能,可以方便地从请求中提取参数并进行验证,支持各种数据类型和验证规则。
  4. 渲染和模板支持:Gin支持多种渲染方式,包括HTML模板、JSON、XML等。开发者可以根据需要选择合适的渲染方式来输出响应结果。
  5. 错误处理和日志记录:Gin提供了方便的错误处理机制和日志记录功能,可以帮助开发者及时捕获和处理错误,并记录相关的日志信息。

Gin最突出的就是其出色的性能,以下是官方公布的压测数据,更详细的可以参考github。

go web框架,Go,golang,前端,开发语言

Gin的发展真的是非常地快速,社区非常活跃不断扩大,看看它恐怖地69.2K Star就知道它到底有多火了。

它的使用也非常简单,以下简单展示了如何使用Gin框架构建一个处理HTTP请求的API。

  1. 首先,确保已经安装了Go语言的开发环境并配置好了相关的环境变量,这里省略。
  2. 创建一个新的Go模块并初始化:
$ go mod init example.com/gin-demo
  1. 安装Gin框架:
$ go get -u github.com/gin-gonic/gin
  1. 在项目的根目录下创建一个名为main.go的文件,并添加以下代码:
package main

import (
	"github.com/gin-gonic/gin"
)

func main() {
	// 创建Gin的默认引擎
	r := gin.Default()

	// 定义一个GET请求的处理器函数
	r.GET("/hello", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "Hello, Gin!",
		})
	})

	// 启动HTTP服务器,默认监听在本地的8080端口
	r.Run()
}
  1. 在命令行中运行以下命令启动HTTP服务器:
$ go run main.go
  1. 访问http://localhost:8080/hello,你将会看到以下JSON响应:
{
	"message": "Hello, Gin!"
}

以上示例演示了如何创建一个简单的Gin应用程序,可以看到整体流程非常简单,基于此更复杂的功能也能够比较容易地支持。

好吧,我吹一下,Gin真的很值得去尝试。

Echo

项目名称:labstack/echo

项目Star数:25.8K

Echo是一款基于Go语言开发的Web框架,以其简单易用和高性能而备受青睐,易于扩展。Echo的口号是:高性能、极简。

go web框架,Go,golang,前端,开发语言

Echo的特点如下:

  1. **轻量级和简单易用:**Echo框架设计精简,易于学习和使用。它采用了类似于标准库的API设计风格,提供了直观且一致的接口,使开发者能够快速上手。
  2. **快速的请求处理:**Echo框架通过使用高性能的路由引擎,能够处理大量的并发请求。它使用了基于前缀树的路由匹配算法,具有快速的匹配速度和低内存消耗。
  3. **路由和中间件支持:**Echo提供了灵活且强大的路由功能,可以轻松定义URL路由和处理器函数。同时,Echo还支持中间件,用于在请求到达处理器函数之前或之后执行一些额外的逻辑,如身份验证、日志记录等。
  4. **参数绑定和验证:**Echo框架提供了方便的参数绑定和验证功能,能够轻松地从请求中提取参数并进行验证。它支持多种数据类型和验证规则,简化了开发者处理用户输入的过程。
  5. **渲染和模板支持:**Echo支持多种渲染方式,包括HTML模板、JSON、XML等。开发者可以根据需要选择合适的渲染方式来输出响应结果。

Echo最为人称道的就是它的API设计得很直观,非常容易上手,样板代码较少。另外,适合处理大规模高并发的场景,通过路由引擎和内部优化,能够实现很高的性能。

下面是一个使用Echo框架的案例,展示了如何构建一个处理HTTP请求的API。

  1. 创建一个新的Go模块并初始化:
$ go mod init example.com/echo-demo
  1. 安装Echo框架:
$ go get -u github.com/labstack/echo/v4
  1. 在项目的根目录下创建一个名为main.go的文件,并添加以下代码:
package main

import (
	"net/http"

	"github.com/labstack/echo/v4"
)

func main() {
	// 创建Echo实例
	e := echo.New()

	// 定义一个GET请求的处理器函数
	e.GET("/hello", func(c echo.Context) error {
		return c.JSON(http.StatusOK, map[string]string{
			"message": "Hello, Echo!",
		})
	})

	// 启动HTTP服务器,默认监听在本地的8080端口
	e.Start(":8080")
}
  1. 在命令行中运行以下命令启动HTTP服务器:
$ go run main.go
  1. 访问http://localhost:8080/hello,你将会看到以下JSON响应:
{
	"message": "Hello, Echo!"
}

以上示例演示了如何使用Echo框架创建一个简单的API。你可以根据需要添加更多的路由和处理器函数来构建更复杂的应用程序。

Beego

项目名称:beego/beego

项目Star数:29.8K

Beego是一个基于Go语言开发全栈Web框架,具有内置ORM支持,内置的路由、MVC和RESTful API支持,以其高效稳定和丰富的功能而备受关注。

go web框架,Go,golang,前端,开发语言

  1. **路由和中间件支持:**Beego提供了强大的路由功能,支持正则表达式和RESTful风格的路由定义。同时,它还提供了中间件机制,用于在请求到达处理器函数之前或之后执行一些额外的逻辑,如身份验证、缓存、日志记录等。
  2. **ORM支持:**Beego内置了简单易用的ORM(对象关系映射)框架,可以方便地进行数据库操作。它支持主流的数据库系统,并提供了丰富的ORM功能,如模型定义、数据查询、事务处理等。
  3. **参数绑定和验证:**Beego框架提供了方便的参数绑定和验证功能,可以轻松地从请求中提取参数并进行验证。它支持多种数据类型和验证规则,简化了开发者处理用户输入的过程。
  4. **模板引擎支持:**Beego支持多种模板引擎,包括原生的Go模板引擎和第三方模板引擎,如Beego自带的BeegoTemplate、第三方的Mustache和Velocity等。开发者可以根据需要选择合适的模板引擎来渲染视图。
  5. **国际化支持:**Beego提供了简单易用的国际化(i18n)支持,可以方便地进行多语言应用程序的开发和管理。

Beego框架经过多年的发展和优化,已经被广泛使用并得到了验证,具有良好的性能和稳定性,非常适合构建大型的web应用。不过Beego相当于其他的web框架,其学习曲线较为陡峭,初学者入手会比较慢,需要理解框架的各个模块和概念,并且文档相对较少一些。

下面是一个使用Beego框架的案例,展示了如何构建一个简单的web服务。

  1. 创建一个新的Go模块并初始化:
$ go mod init example.com/beego-demo
  1. 安装Beego框架和Beego的ORM工具Bee:
$ go get -u github.com/astaxie/beego
$ go get -u github.com/beego/bee/v2
  1. 在项目的根目录下创建一个名为main.go的文件,并添加以下代码:
package main

import (
	"github.com/astaxie/beego"
)

type HelloController struct {
	beego.Controller
}

func (c *HelloController) Get() {
	c.Data["json"] = map[string]string{
		"message": "Hello, Beego!",
	}
	c.ServeJSON()
}

func main() {
	beego.Router("/hello", &HelloController{})

	beego.Run()
}
  1. 在命令行中运行以下命令启动HTTP服务器:
$ bee run
  1. 访问http://localhost:8080/hello,你将会看到以下JSON响应:
{
	"message": "Hello, Beego!"
}

是不是很简单呢~~当然beego的功能非常丰富,远远不是以上案例展示的那么简单,它还有大量的复杂功能,这里就不开展了,等待你去发掘了。

Revel

项目名称:revel/revel

项目Star数:12.9K

Revel是一个基于Go语言开发的全栈式Web框架,它包含了多种功能和工具,比如ORM、模板引擎和路由器,功能全面且丰富。

go web框架,Go,golang,前端,开发语言

  1. **完整的MVC架构:**Revel框架采用了经典的MVC(Model-View-Controller)架构,将应用程序的不同部分清晰地分离,使开发者能够更好地组织和管理代码。
  2. **自动路由和URL解析:**Revel通过自动路由和URL解析,简化了路由配置的过程。开发者只需编写控制器和方法,Revel会自动将请求映射到相应的控制器方法,减少了繁琐的配置工作。
  3. **强大的模板引擎:**Revel提供了强大的模板引擎,支持模板继承、模板嵌套、条件判断、循环等常用模板功能。开发者可以轻松地构建灵活且可重用的视图模板。
  4. **数据库支持:**Revel框架内置了数据库ORM(对象关系映射)工具,支持多种数据库系统,如MySQL、PostgreSQL和SQLite等。开发者可以方便地进行数据库操作,包括数据查询、模型关联、事务处理等。
  5. **插件和扩展性:**Revel提供了丰富的插件和扩展机制,使开发者能够轻松集成第三方库和功能。同时,Revel还提供了丰富的文档和示例,方便开发者学习和扩展框架。

revel不像其他的web框架,它提供的是全栈式的功能,包括完整的MVC架构、路由和URL解析、数据库、插件、渲染引擎等,因此其功能非常强大,但是也因此它相对复杂,也显得不是那么主流,社区活跃性会相对差一丢丢。

下面是一个使用Revel框架的案例,展示了如何构建一个简单的Web应用程序。

  1. 安装Revel框架:
$ go get -u github.com/revel/revel
$ go get -u github.com/revel/cmd/revel
  1. 创建一个新的Revel应用程序:
$ revel new example.com/revel-demo
  1. 进入应用程序目录并创建一个名为hello的控制器:
$ cd revel-demo
$ revel generate controller hello
  1. app/controllers目录下打开hello.go文件,并将以下代码添加到Hello控制器中:
package controllers

import "github.com/revel/revel"

type Hello struct {
	*revel.Controller
}

func (c Hello) Index() revel.Result {
	return c.RenderText("Hello, Revel!")
}
  1. conf/routes文件中添加以下路由配置:
GET     /hello          Hello.Index
  1. 启动Revel应用程序:
$ revel run -a example.com/revel-demo
  1. 访问http://localhost:9000/hello,你将会看到以下文本响应:
Hello, Revel!

以上示例演示了如何使用Revel框架创建一个简单的Web应用程序。你可以根据需要添加更多的控制器和路由来构建更复杂的应用。

Buffalo

项目名称:gobuffalo/buffalo

项目Star数:7.7K

Buffalo是一款现代化的Go语言Web框架,以其简单易用、高效稳定的特点受到广泛关注。它是一个完整的Web框架,集成了许多功能,比如ORM、WebSockets和前端工具。

go web框架,Go,golang,前端,开发语言

Buffalo的功能非常丰富,特点鲜明,属于小而美的那种:

  1. **快速开发和自动化:**Buffalo框架提供了快速开发的能力,通过自动化工具和约定优于配置的理念,使开发者能够迅速搭建应用程序的基础结构,并提供一致性的开发体验。
  2. **完整的MVC架构:**Buffalo采用了经典的MVC(Model-View-Controller)架构,将应用程序的不同部分清晰地分离,使开发者能够更好地组织和管理代码。
  3. **路由和中间件支持:**Buffalo提供了强大的路由功能,支持RESTful风格的路由定义和参数解析。同时,它还提供了中间件机制,用于在请求到达处理器函数之前或之后执行一些额外的逻辑,如身份验证、缓存、日志记录等。
  4. **ORM支持:**Buffalo框架集成了流行的ORM(对象关系映射)库Pop,使开发者能够方便地进行数据库操作。它支持多种数据库系统,并提供了丰富的ORM功能,如模型定义、数据查询、事务处理等。
  5. **WebSockets支持:**Buffalo内置了对WebSockets的支持,开发者可以轻松构建实时应用程序,与客户端进行双向通信。

Buffalo框架使用起来比较简单,它采用约定优于配置的原则,各项配置会比较简单,复杂功能的二次扩展也比较容易。不足之处是Buffalo的生态系统较小一些,相关的资源文档会比较少,当然这不意味这它不优秀哈,我自己用起来我是觉得挺美的。

下面是一个使用Buffalo框架的案例,展示了如何构建一个简单的待办事项管理应用程序。

  1. 安装Buffalo框架:
$ go get -u github.com/gobuffalo/buffalo/buffalo
  1. 创建一个新的Buffalo应用程序:
$ buffalo new todo-app
  1. 进入应用程序目录并生成一个名为task的资源:
$ cd todo-app
$ buffalo g resource task name done
  1. 迁移数据库:
$ buffalo db migrate
  1. actions目录下打开tasks.go文件,并将以下代码添加到List方法中:
func (v TasksResource) List(c buffalo.Context) error {
    tasks := &models.Tasks{}
    if err := models.DB.All(tasks); err != nil {
        return errors.WithStack(err)
    }
    return c.Render(200, r.JSON(tasks))
}
  1. app.go文件中添加以下路由配置:
app.GET("/tasks", TasksResource.List)
  1. 启动Buffalo应用程序:
$ buffalo dev
  1. 访问http://localhost:3000/tasks,你将会看到一个空的任务列表。

以上示例演示了如何使用Buffalo框架创建一个简单的待办事项管理应用程序。你可以根据需要添加更多的路由和控制器来构建更复杂的应用。

如何选择合适的web框架?

以上列举了5个当前在go语言领域的热门web框架,每个框架都有其独特的特点,那么我们应该如何选择呢?

我谈谈自己的看法。

首先,看团队内成员对于这些框架的熟悉成熟,优先选择相对熟悉的框架,学习成本较低,后期的bug定位和运维也能省一些事情。

如果团队内对以上框架没有熟悉的情况,那么可以根据你的需求和项目规模选择其中的一个。整体从以下方面进行考虑:

  1. **项目需求:**首先要考虑项目的规模和要求。如果你需要构建一个小型的、快速开发的应用程序,可以选择简单易用的框架,如Gin或Echo。如果你需要构建一个大型的、复杂的应用程序,可能需要考虑更全面的框架,如Beego或Buffalo,如果你需要一个一体化的解决方案,那么Revel可能更适合你。
  2. **开发经验:**考虑你和你的团队的开发经验。如果你已经熟悉某个框架并且对其生态系统和工具链感到满意,那么继续使用该框架可能会更加高效。如果你是一个新手开发者,**期望快速开发应用,**可以选择具有友好学习曲线和良好文档支持的框架,如Gin或Echo。
  3. **社区支持:**考虑框架的社区活跃程度和支持水平。一个活跃的社区意味着你可以更容易地获取帮助、解决问题,并且可以从社区中获得丰富的资源和插件。社区活跃度还可以反映框架的发展和更新速度。在这方面,Gin和Echo拥有较大的社区,而Beego、Buffalo和Revel的社区相对较小。
  4. **性能要求:**如果你的应用程序对性能有较高的要求,那么你可能需要考虑框架的性能。不同的框架在性能方面可能存在差异,可以通过参考框架的文档、基准测试和性能比较来评估其性能特点,Gin和Echo值得重点关注。

最终的选择应该根据项目需求、团队经验和个人喜好综合考虑。在实际选择过程中,可以尝试使用不同框架的示例和教程,进行简单的原型开发,以便更好地了解框架的特点和适用性。文章来源地址https://www.toymoban.com/news/detail-727748.html

到了这里,关于5大热门基于go语言的web框架,别再只知道springmvc的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Go语言web框架——Gin

    Gin是一个go语言写的Web框架 客户机通过TCP/IP协议建立到服务器的TCP连接 客户端向服务器发送HTTP协议请求 Request GET /url ,请求服务器里的资源文档 服务器向客户机发送HTTP协议应答Response,如果请求的资源包含有动态语言的内容,那么服务器会调用动态语言的解释引擎负责处理

    2023年04月14日
    浏览(67)
  • Go语言Web框架Gin常见用法

    Gin是目前Go语言最为常用的Web框架,日常工作中也少不了使用此框架,编写此使用总结文档以备后用。 此文档参考官方文档编写,仅用于自我学习总结和参考。 我一直认为编写文档的意义一方面是给其他人提供了些许帮助,另一方面则是让自己加深了对知识的理解并为自己提

    2024年02月03日
    浏览(35)
  • 使用Go语言打造轻量级Web框架

    前言 Web框架是Web开发中不可或缺的组件。它们的主要目标是抽象出HTTP请求和响应的细节,使开发人员可以更专注于业务逻辑的实现。在本篇文章中,我们将使用Go语言实现一个简单的Web框架,类似于Gin框架。 功能 我们的Web框架需要实现以下功能: 路由:处理HTTP请求的路由

    2023年04月08日
    浏览(29)
  • 你知道Web框架有哪些吗?

    Bootstrap Bootstrap 是由Twitter团队推出的开源前端框架,以HTML、CSS和JavaScript为基础,提供了一系列可复用的UI组件和强大的响应式布局系统。它易于上手,有助于开发者快速构建简洁、一致且移动友好的网站。 Foundation Foundation 同样是一款响应式前端框架,与Bootstrap相似,但它强

    2024年02月20日
    浏览(20)
  • Go语言结构体struct详解,Go空结构体的这些妙用你知道吗?

    本文详解了Go语言结构体的各个知识点,最后介绍了空结构体的3种妙用。希望对你有帮助。 结构体,是一种自定义的数据类型,由多个数据类型组合而成。用于描述一类事物相关属性 。 定义方式 : 结构体和结构体指针,两者的实例化有所区别 提供多种写法,灵活使用:

    2024年02月01日
    浏览(32)
  • 3.你所不知道的go语言控制语句——Leetcode习题69

    目录 本篇前瞻 Leetcode习题9 题目描述 代码编写 控制结构 顺序结构(Sequence) 声明和赋值 多返回值赋值 运算符 算术运算符 位运算符 逻辑运算 分支结构 if 语句 switch 语句 逻辑表达式 fallthrough 类型推断 循环语句 continue break goto Leetcode习题69 题目描述 题目分析 代码编写 本篇

    2024年02月12日
    浏览(25)
  • 你是否想知道如何应对高并发?Go语言为你提供了答案!

    并发编程是当前软件领域中不可忽视的一个关键概念。随着CPU等硬件的不断发展,我们都渴望让我们的程序运行速度更快、更快。而Go语言在语言层面天生支持并发,充分利用现代CPU的多核优势,这也是Go语言能够广泛流行的一个重要原因。 在Java中,要支持高并发有几种方案

    2024年02月04日
    浏览(33)
  • 盘点10大热门区块链开源软件,你知道几个?

    越来越多的企业将开源软件作为其构建基础信息系统的重要选择,“ 低成本、安全性高、灵活自由、高可用性、协同性好 ……”一连串的技术优势,让越来越多的企业无法拒绝。 在区块链领域,又有哪些热门开源软件呢?本期,将为大家盘点10大热门区块链开源软件,你熟

    2023年04月11日
    浏览(33)
  • GO 的 Web 开发系列(二)—— Web 项目的技术框架选择和项目搭建

    Web 系统搭建第一步,选择技术框架,完成 Hello World 。 小玖用的 Go 版本是 1.21.6 介绍项目的技术选型个结构,不包括代码。 全文链接:https://blog.nineya.com/archives/149.html Web 框架: github.com/gin-gonic/gin v1.9.1 调研了 Go 开发者一圈,给小玖推荐这个框架的人最多 :tushe: 主要优点是轻

    2024年01月25日
    浏览(33)
  • 初始化一个Gin框架的Go-Web项目

    使用到的第三方库 gin Gin 框架 viper 配置文件管理 cors 跨域资源请求配置 gorm ORM 库 zap 日志记录 Go 语言程序的入口点 main.go 文件 使用 flag 读取配置文件路径参数,默认当前目录下 使用 viper 读取 config.ini 配置文件初始化初始数据 初始化随机数种子 初始化数据库 声明启动程序

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包