探索Go语言中的主流Web框架

发表时间: 2024-03-13 19:08

小蚂蚁开源,探索、发现、分享主流开源技术框架,搭建开源技术社区,共创美好开源生态!

GO 语言爱好者的最佳Web框架



如果你是自己写一个小应用程序,那你可能不需要Web框架。但是如果你要做产品,那么你肯定需要一个好的框架。

如果你认为你有相应的知识和经验,你会自己编写所有的这些代码么?你有时间找到一个产品级的外部包来完成工作吗?你确定这与你应用程序的其它部分一致吗?

这些都是促使我们使用框架的原因,如果其他人已经做了必要的艰苦的工作,我们不会想让自己重复这些工作。

简介

Go 是一个快速增长的开源编程语言,用于构建简单、快速和可靠的软件。点这里看有哪些大公司在使用Go语言来构建他们的服务。

本文提供了所有必要的信息,以帮助开发人员了解使用Go语言开发Web应用程序的最佳选项。。

本文包含了最详细的框架比较,通过尽可能多的角度(人气,社区支持,内置功能等)来比较最知名的几个Web 框架。

1、Beego: 一个Go语言下开源的,高性能Web框架

https://github.com/astaxie/beegohttps://beego.me

Beego版本全网最全案例:

① Beego+Layui版本:
https://gitee.com/easygoadmin/EasyGoAdmin_Beego_Layui

② Beego+EleVue版本:
https://gitee.com/easygoadmin/EasyGoAdmin_Beego_EleVue

③ Beego+AntdVue版本:
https://gitee.com/easygoadmin/EasyGoAdmin_Beego_AntdVue

2、Echo: 一个高性能,极简的Web框架

https://github.com/labstack/echo

https://echo.labstack.com

Echo版本全网最全案例:

① Echo+Layui版本:
https://gitee.com/easygoadmin/EasyGoAdmin_Echo_Layui

② Echo+EleVue版本:
https://gitee.com/easygoadmin/EasyGoAdmin_Echo_EleVue

③ Echo+AntdVue版本:
https://gitee.com/easygoadmin/EasyGoAdmin_Echo_AntdVue

3、Gin: 一个Go语言写的HTTP Web框架

它提供了Martini风格的API并有更好的性能。

https://github.com/gin-gonic/gin

https://gin-gonic.github.io/gin

Gin版本全网最全案例:

①Gin+Layui版本:
https://gitee.com/easygoadmin/EasyGoAdmin_Gin_Layui

②Gin+EleVue版本:
https://gitee.com/easygoadmin/EasyGoAdmin_Gin_EleVue

③Gin+AntdVue版本:
https://gitee.com/easygoadmin/EasyGoAdmin_Gin_AntdVue

4、Iris: 目前发展最快的Go Web框架

提供完整的MVC功能并且面向未来。

https://github.com/kataras/iris

https://iris-go.com

Iris版本全网最全案例:

①Iris+Layui版本:
https://gitee.com/easygoadmin/EasyGoAdmin_Iris_Layui

②Iris+EleVue版本:
https://gitee.com/easygoadmin/EasyGoAdmin_Iris_EleVue

③Iris+AntdVue版本:
https://gitee.com/easygoadmin/EasyGoAdmin_Iris_AntdVue

5、GoFrame应用开发框架。

https://goframe.org/#all-updates


GoFrame版本全网最全案例:

①GoFrame+Layui版本:
https://gitee.com/easygoadmin/EasyGoAdmin_GoFrame_Layui

②GoFrame+EleVue版本:
https://gitee.com/easygoadmin/EasyGoAdmin_GoFrame_EleVue

③GoFrame+AntdVue版本:
https://gitee.com/easygoadmin/EasyGoAdmin_GoFrame_AntdVue

路由

package routerimport (	"easygoadmin/app/controller"	"easygoadmin/app/middleware"	"easygoadmin/app/widget"	"github.com/kataras/iris/v12"	"github.com/kataras/iris/v12/sessions")// 注册路由func RegisterRouter(app *iris.Application) {	// 注册SESSION中间件	session := sessions.New(sessions.Config{		Cookie: sessions.DefaultCookieName,	})	// SESSION中间件	app.Use(session.Handler())	// 登录验证中间件	app.Use(middleware.CheckLogin)	// 鉴权中间件	app.Use(middleware.CheckPermission)	// 视图文件目录 每次请求时自动重载模板	tmpl := iris.HTML("./view", ".html").Reload(true)	// 注册自定义视图函数	tmpl.AddFunc("safe", widget.Safe)	tmpl.AddFunc("date", widget.Date)	tmpl.AddFunc("widget", widget.Widget)	tmpl.AddFunc("query", widget.Query)	tmpl.AddFunc("add", widget.Add)	tmpl.AddFunc("edit", widget.Edit)	tmpl.AddFunc("delete", widget.Delete)	tmpl.AddFunc("dall", widget.Dall)	tmpl.AddFunc("expand", widget.Expand)	tmpl.AddFunc("collapse", widget.Collapse)	tmpl.AddFunc("addz", widget.Addz)	tmpl.AddFunc("switch", widget.Switch)	tmpl.AddFunc("select", widget.Select)	tmpl.AddFunc("submit", widget.Submit)	tmpl.AddFunc("icon", widget.Icon)	tmpl.AddFunc("transfer", widget.Transfer)	tmpl.AddFunc("upload_image", widget.UploadImage)	tmpl.AddFunc("album", widget.Album)	tmpl.AddFunc("item", widget.Item)	tmpl.AddFunc("kindeditor", widget.Kindeditor)	tmpl.AddFunc("checkbox", widget.Checkbox)	tmpl.AddFunc("radio", widget.Radio)	tmpl.AddFunc("city", widget.City)	tmpl.AddFunc("import", widget.Import)	tmpl.AddFunc("export", widget.Export)	// 注册视图	app.RegisterView(tmpl)	// 静态文件	app.HandleDir("/static", "./public/static")	// 错误请求配置	app.OnErrorCode(iris.StatusNotFound, func(ctx iris.Context) {		ctx.View("error/404.html")	})	app.OnErrorCode(iris.StatusInternalServerError, func(ctx iris.Context) {		ctx.View("error/500.html")	})	// 登录、主页	index := app.Party("/")	{		index.Get("/", controller.Index.Index)		index.Any("/login", controller.Login.Login)		index.Get("/captcha", controller.Login.Captcha)		index.Get("/index", controller.Index.Index)		index.Get("/main", controller.Index.Main)		index.Any("/userInfo", controller.Index.UserInfo)		index.Any("/updatePwd", controller.Index.UpdatePwd)		index.Get("/logout", controller.Index.Logout)	}	// 文件上传	upload := app.Party("/upload")	{		upload.Post("/uploadImage", controller.Upload.UploadImage)		upload.Post("/uploadEditImage", controller.Upload.UploadEditImage)	}	// 职级管理	level := app.Party("/level")	{		level.Get("/index", controller.Level.Index)		level.Post("/list", controller.Level.List)		level.Get("/edit/{id:int}", controller.Level.Edit)		level.Post("/add", controller.Level.Add)		level.Post("/update", controller.Level.Update)		level.Post("/delete/{id:int}", controller.Level.Delete)		level.Post("/setStatus", controller.Level.Status)		level.Post("/import", controller.Level.ImportExcel)		level.Post("/export", controller.Level.ExportExcel)	}	// 岗位管理	position := app.Party("/position")	{		position.Get("/index", controller.Position.Index)		position.Post("/list", controller.Position.List)		position.Get("/edit/{id:int}", controller.Position.Edit)		position.Post("/add", controller.Position.Add)		position.Post("/update", controller.Position.Update)		position.Post("/delete/{id:int}", controller.Position.Delete)		position.Post("/setStatus", controller.Position.Status)	}	/* 角色路由 */	role := app.Party("role")	{		role.Get("/index", controller.Role.Index)		role.Post("/list", controller.Role.List)		role.Get("/edit/{id:int}", controller.Role.Edit)		role.Post("/add", controller.Role.Add)		role.Post("/update", controller.Role.Update)		role.Post("/delete/{id:int}", controller.Role.Delete)		role.Post("/setStatus", controller.Role.Status)		role.Get("/getRoleList", controller.Role.GetRoleList)	}	/* 角色菜单权限 */	roleMenu := app.Party("rolemenu")	{		roleMenu.Get("/index/{roleId:int}", controller.RoleMenu.Index)		roleMenu.Post("/save", controller.RoleMenu.Save)	}	/* 部门管理 */	dept := app.Party("dept")	{		dept.Get("/index", controller.Dept.Index)		dept.Post("/list", controller.Dept.List)		dept.Get("/edit/{id:int}", controller.Dept.Edit)		dept.Get("/edit/{id:int}/{pid:string}", controller.Dept.Edit)		dept.Post("/add", controller.Dept.Add)		dept.Post("/update", controller.Dept.Update)		dept.Post("/delete/{id:int}", controller.Dept.Delete)		dept.Get("/getDeptList", controller.Dept.GetDeptList)	}	/* 用户管理 */	user := app.Party("user")	{		user.Get("/index", controller.User.Index)		user.Post("/list", controller.User.List)		user.Get("/edit/{id:int}", controller.User.Edit)		user.Post("/add", controller.User.Add)		user.Post("/update", controller.User.Update)		user.Post("/delete/{id:int}", controller.User.Delete)		user.Post("/setStatus", controller.User.Status)		user.Post("/resetPwd", controller.User.ResetPwd)	}}

案例分享

EasyGoAdmin敏捷开发框架