GoFrame研发的Golang项目管理系统:一款高效的工具

发表时间: 2024-01-18 18:38

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

GoFrame是一个用于构建企业级应用的完整框架,其核心思想是基于Go语言特性,通过约定大于配置的方式提供了一系列的开发最佳实践。

GoFrame的设计目标是让开发人员能够快速、高效地构建稳定、可靠的应用程序。它提供了一系列的功能和工具,包括路由、中间件、数据库访问、缓存、配置管理、日志记录等,以及丰富的插件和扩展机制,使得开发人员可以专注于业务逻辑的实现,而不需要从零开始构建每一个组件。

在国内,GoFrame的社区和生态系统正在不断壮大和完善。越来越多的开发人员和企业开始采用GoFrame作为首选的开发框架,尤其在微服务、分布式系统、高并发Web应用等领域,GoFrame的应用非常广泛。

然而,是否选择GoFrame作为开发框架还需要根据具体的需求和场景来决定。GoFrame虽然提供了很多强大的功能和工具,但也有一定的学习曲线和门槛。在选择框架时,需要综合考虑项目的需求、团队的技能和经验、社区的支持和活跃度等因素。

总的来说,GoFrame是国内较为完善的Golang开发框架之一,具有广泛的应用前景和潜力。


EasyGoAdmin敏捷开发框架是一个基于Golang、Layui的iframe风格的多标签混编版框架。它使用传统HTML模板数据渲染,属于非前后端分离框架,前端基于Layui研发,后端基于Golang语言采用Gin、Beego、Iris、GoFrame、Revel、Echo等技术实现。该框架采用抽象Layout模板布局的形式对HTML页面进行抽离切割,每个页面都包含头部、主体内容、底部等部分,借助模板引擎进行引用,拼装成一个完整的HTML页面所需的部分。

GoFrame版本案例

一款 Go 语言基于GoFrame、Layui、MySQL等框架精心打造的一款模块化、高性能、企业级的敏捷开发框架,本着简化开发、提升开发效率的初衷,框架自研了一套个性化的组件,实现了可插拔的组件式开发方式:单图上传、多图上传、下拉选择、开关按钮、单选按钮、多选按钮、图片裁剪等等一系列个性化、轻量级的组件,是一款真正意义上实现组件化开发的敏捷开发框架。

路由文件

package routerimport (	"easygoadmin/app/controller"	"easygoadmin/app/middleware"	"fmt"	"github.com/gogf/gf/frame/g"	"github.com/gogf/gf/net/ghttp")func init() {	fmt.Println("初始化路由")	s := g.Server()	// 登录验证中间件	s.Use(middleware.CheckLogin)	/* 文件上传 */	s.Group("/upload", func(group *ghttp.RouterGroup) {		// 上传图片		group.POST("/uploadImage", controller.Upload.UploadImage)		group.POST("/uploadEditImage", controller.Upload.UploadEditImage)	})	/* 登录注册 */	s.Group("/", func(group *ghttp.RouterGroup) {		group.GET("/", controller.Index.Index)		group.ALL("/login", controller.Login.Login)		group.GET("/captcha", controller.Login.Captcha)		group.GET("/index", controller.Index.Index)		group.GET("/main", controller.Index.Main)		group.ALL("/userInfo", controller.Index.UserInfo)		group.ALL("/updatePwd", controller.Index.UpdatePwd)		group.GET("/logout", controller.Index.Logout)	})	/* 用户管理 */	s.Group("user", func(group *ghttp.RouterGroup) {		group.GET("/index", controller.User.Index)		group.POST("/list", controller.User.List)		group.GET("/edit", controller.User.Edit)		group.POST("/add", controller.User.Add)		group.POST("/update", controller.User.Update)		group.POST("/delete", controller.User.Delete)		group.POST("/setStatus", controller.User.Status)		group.POST("/resetPwd", controller.User.ResetPwd)	})	/* 职级管理 */	s.Group("level", func(group *ghttp.RouterGroup) {		group.GET("/index", controller.Level.Index)		group.POST("/list", controller.Level.List)		group.GET("/edit", controller.Level.Edit)		group.POST("/add", controller.Level.Add)		group.POST("/update", controller.Level.Update)		group.POST("/delete", controller.Level.Delete)		group.POST("/setStatus", controller.Level.Status)		group.POST("/import", controller.Level.ImportExcel)		group.POST("/export", controller.Level.ExportExcel)	})	/* 岗位路由 */	s.Group("position", func(group *ghttp.RouterGroup) {		group.GET("/index", controller.Position.Index)		group.POST("/list", controller.Position.List)		group.GET("/edit", controller.Position.Edit)		group.POST("/add", controller.Position.Add)		group.POST("/update", controller.Position.Update)		group.POST("/delete", controller.Position.Delete)	})	/* 角色路由 */	s.Group("role", func(group *ghttp.RouterGroup) {		group.GET("/index", controller.Role.Index)		group.POST("/list", controller.Role.List)		group.GET("/edit", controller.Role.Edit)		group.POST("/add", controller.Role.Add)		group.POST("/update", controller.Role.Update)		group.POST("/delete", controller.Role.Delete)		group.POST("/setStatus", controller.Role.Status)	})	/* 角色菜单权限 */	s.Group("rolemenu", func(group *ghttp.RouterGroup) {		group.GET("/index", controller.RoleMenu.Index)		group.POST("/save", controller.RoleMenu.Save)	})	/* 部门管理 */	s.Group("dept", func(group *ghttp.RouterGroup) {		group.GET("/index", controller.Dept.Index)		group.POST("/list", controller.Dept.List)		group.GET("/edit", controller.Dept.Edit)		group.POST("/add", controller.Dept.Add)		group.POST("/update", controller.Dept.Update)		group.POST("/delete", controller.Dept.Delete)	})	/* 菜单管理 */	s.Group("menu", func(group *ghttp.RouterGroup) {		group.GET("/index", controller.Menu.Index)		group.POST("/list", controller.Menu.List)		group.GET("/edit", controller.Menu.Edit)		group.POST("/add", controller.Menu.Add)		group.POST("/update", controller.Menu.Update)		group.POST("/delete", controller.Menu.Delete)	})	/* 城市管理 */	s.Group("city", func(group *ghttp.RouterGroup) {		group.GET("/index", controller.City.Index)		group.POST("/list", controller.City.List)		group.GET("/edit", controller.City.Edit)		group.POST("/add", controller.City.Add)		group.POST("/update", controller.City.Update)		group.POST("/delete", controller.City.Delete)		group.POST("/getChilds", controller.City.GetChilds)	})	/* 字典管理 */	s.Group("dict", func(group *ghttp.RouterGroup) {		group.GET("/index", controller.Dict.Index)		group.POST("/list", controller.Dict.List)		group.POST("/add", controller.Dict.Add)		group.POST("/update", controller.Dict.Update)		group.POST("/delete", controller.Dict.Delete)	})	/* 字典项管理 */	s.Group("dictdata", func(group *ghttp.RouterGroup) {		group.POST("/list", controller.DictData.List)		group.POST("/add", controller.DictData.Add)		group.POST("/update", controller.DictData.Update)		group.POST("/delete", controller.DictData.Delete)	})	/* 配置管理 */	s.Group("config", func(group *ghttp.RouterGroup) {		group.GET("/index", controller.Config.Index)		group.POST("/list", controller.Config.List)		group.POST("/add", controller.Config.Add)		group.POST("/update", controller.Config.Update)		group.POST("/delete", controller.Config.Delete)	})	/* 字典项管理 */	s.Group("configdata", func(group *ghttp.RouterGroup) {		group.POST("/list", controller.ConfigData.List)		group.GET("/edit", controller.ConfigData.Edit)		group.POST("/add", controller.ConfigData.Add)		group.POST("/update", controller.ConfigData.Update)		group.POST("/delete", controller.ConfigData.Delete)		group.POST("/setStatus", controller.ConfigData.Status)	})	/* 友链管理 */	s.Group("link", func(group *ghttp.RouterGroup) {		group.GET("/index", controller.Link.Index)		group.POST("/list", controller.Link.List)		group.GET("/edit", controller.Link.Edit)		group.POST("/add", controller.Link.Add)		group.POST("/update", controller.Link.Update)		group.POST("/delete", controller.Link.Delete)		group.POST("/setStatus", controller.Link.Status)	})	/* 站点管理 */	s.Group("item", func(group *ghttp.RouterGroup) {		group.GET("/index", controller.Item.Index)		group.POST("/list", controller.Item.List)		group.GET("/edit", controller.Item.Edit)		group.POST("/add", controller.Item.Add)		group.POST("/update", controller.Item.Update)		group.POST("/delete", controller.Item.Delete)	})	/* 栏目管理 */	s.Group("itemcate", func(group *ghttp.RouterGroup) {		group.GET("/index", controller.ItemCate.Index)		group.POST("/list", controller.ItemCate.List)		group.GET("/edit", controller.ItemCate.Edit)		group.POST("/add", controller.ItemCate.Add)		group.POST("/update", controller.ItemCate.Update)		group.POST("/delete", controller.ItemCate.Delete)		group.GET("/getCateTreeList", controller.ItemCate.GetCateTreeList)	})	/* 广告位管理 */	s.Group("adsort", func(group *ghttp.RouterGroup) {		group.GET("/index", controller.AdSort.Index)		group.POST("/list", controller.AdSort.List)		group.GET("/edit", controller.AdSort.Edit)		group.POST("/add", controller.AdSort.Add)		group.POST("/update", controller.AdSort.Update)		group.POST("/delete", controller.AdSort.Delete)	})	/* 广告管理 */	s.Group("ad", func(group *ghttp.RouterGroup) {		group.GET("/index", controller.Ad.Index)		group.POST("/list", controller.Ad.List)		group.GET("/edit", controller.Ad.Edit)		group.POST("/add", controller.Ad.Add)		group.POST("/update", controller.Ad.Update)		group.POST("/delete", controller.Ad.Delete)		group.POST("/setStatus", controller.Ad.Status)	})	/* 通知管理 */	s.Group("notice", func(group *ghttp.RouterGroup) {		group.GET("/index", controller.Notice.Index)		group.POST("/list", controller.Notice.List)		group.GET("/edit", controller.Notice.Edit)		group.POST("/add", controller.Notice.Add)		group.POST("/update", controller.Notice.Update)		group.POST("/delete", controller.Notice.Delete)	})	/* 网站设置 */	s.Group("configweb", func(group *ghttp.RouterGroup) {		group.ALL("/index", controller.ConfigWeb.Index)	})	/* 会员等级 */	s.Group("memberlevel", func(group *ghttp.RouterGroup) {		group.GET("/index", controller.MemberLevel.Index)		group.POST("/list", controller.MemberLevel.List)		group.GET("/edit", controller.MemberLevel.Edit)		group.POST("/add", controller.MemberLevel.Add)		group.POST("/update", controller.MemberLevel.Update)		group.POST("/delete", controller.MemberLevel.Delete)	})	/* 会员管理 */	s.Group("member", func(group *ghttp.RouterGroup) {		group.GET("/index", controller.Member.Index)		group.POST("/list", controller.Member.List)		group.GET("/edit", controller.Member.Edit)		group.POST("/add", controller.Member.Add)		group.POST("/update", controller.Member.Update)		group.POST("/delete", controller.Member.Delete)		group.POST("/setStatus", controller.Member.Status)	})	/* 统计分析 */	s.Group("analysis", func(group *ghttp.RouterGroup) {		group.GET("/index", controller.Analysis.Index)	})	/* 代码生成器 */	s.Group("generate", func(group *ghttp.RouterGroup) {		group.GET("/index", controller.Generate.Index)		group.POST("/list", controller.Generate.List)		group.POST("/generate", controller.Generate.Generate)	})}

案例分享

EasyGoAdmin敏捷开发框架