小蚂蚁开源,探索、发现、分享主流开源技术框架,搭建开源技术社区,共创美好开源生态!
在Go语言中,有几个流行的Web后台管理系统可供选择。以下是几个推荐的系统:
- EasyGoAdmin:是一款基于GoFrame、Beego、Gin、Iris、Vue.js、ElementUI和MySQL的后台管理系统。它采用插件化的前后端分离开发框架,并借助代码生成器可快速搭建前后端分离的后台管理系统。此外,它还支持通过插件的方式下载CMS、微信公众号管理、工作流、短信等插件。

- Gin-Vue-Admin:这是一个基于Gin、Vue.js开发的全栈前后端分离的Web后台管理系统。它集成了JWT鉴权、动态路由、动态菜单等功能,有助于更专注于业务开发,可以快速搭建一套中小型项目。

- Iris:Iris是一个高性能的Go语言Web框架,提供了类似于Martini风格的API。它支持完整的MVC功能,并且面向未来。Iris有多个与前端框架(如Layui、EleVue、AntdVue)集成的版本,适用于不同的项目需求。

这些系统都是基于Go语言的高性能Web框架,并结合了前端技术(如Vue.js)来实现前后端分离的架构。它们提供了丰富的功能和工具,可以协助开发者快速搭建和扩展Web后台管理系统。根据你的具体需求和项目规模,选择适合你的系统即可。请注意,在选择和使用这些系统时,务必参考官方文档和社区资源,以获得更好的支持和协助。
前言
Iris Layui是一个基于Layui框架构建的后台管理系统。Layui是一个轻量级的前端UI框架,以模块化的方式组织和调用JavaScript、CSS等资源,方便开发者快速构建Web应用程序。
Iris Layui后台管理系统一般包含以下功能和特点:
- 用户管理:管理系统的用户信息,包括添加、编辑、删除用户等操作。
- 权限管理:根据角色或权限设置,控制用户对系统功能的访问权限。
- 菜单管理:管理系统的菜单结构,包括添加、编辑、删除菜单等操作。
- 数据管理:管理系统的数据,包括数据的增删改查等操作。
- 日志管理:记录系统的操作日志,方便追踪和排查问题。
- 通知管理:发送系统通知,提醒用户关注重大信息。
- 自定义设置:根据需求,自定义系统的外观、布局等设置。
Iris Layui后台管理系统一般采用模块化的设计方式,方便开发者根据需求进行扩展和定制。同时,它还提供了丰富的API接口和工具,方便与其他系统或服务进行集成和交互。
需要注意的是,Iris Layui后台管理系统只是一个参考实现,具体的功能和设计会因项目需求而有所不同。你可以根据自己的实际情况进行调整和扩展。
项目实例
一款 Go 语言基于Iris、Layui、MySQL等框架精心打造的一款模块化、高性能、企业级的灵敏开发框架,本着简化开发、提升开发效率的初衷触发,框架自研了一套个性化的组件,实现了可插拔的组件式开发方式:单图上传、多图上传、下拉选择、开关按钮、单选按钮、多选按钮、图片裁剪等等一系列个性化、轻量级的组件,是一款真正意义上实现组件化开发的灵敏开发框架。

项目结构
easygoadmin
|-- conf
| `-- app.conf
|-- controllers
| `-- default.go
|-- main.go
|-- models
|-- routers
| `-- router.go
|-- static
| |-- css
| |-- img
| `-- js
|-- tests
| `-- default_test.go
`-- views
`-- index.tpl
核心组件
- 单图上传组件
{{upload_image "avatar|头像|90x90|提议上传尺寸450x450|450x450" .info.Avatar "" 0}}
- 多图上传组件
{{album "avatar|图集|90x90|20|提议上传尺寸450x450" .info.Avatar "" 0}}
- 下拉选择组件
{{select "gender|1|性别|name|id" "1=男,2=女,3=保密" .info.Gender}}
- 单选按钮组件
{{radio "gender|name|id" "1=男,2=女,3=保密" .info.Gender}}
- 复选框组件
{{checkbox "role_ids|name|id" .roleList .info.RoleIds}}
- 城市选择组件
{{city .info.DistrictCode 3 1}}
- 开关组件
{{switch "status" "在用|禁用" .info.Status}}
- 日期组件
{{date "birthday|1|出生日期|date" .info.Birthday}}
- 图标组件
{{icon "icon" .info.Icon}}
- 穿梭组件
{{transfer "func|0|全部节点,已赋予节点|name|id|220x350" "1=列表,5=添加,10=修改,15=删除,20=详情,25=状态,30=批量删除,35=添加子级,40=全部展开,45=全部折叠" .funcList}} 模块展示
路由
package router
import (
"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灵敏开发框架
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END

















暂无评论内容