• GoFrame+Vue+ElementUI学习入门基础框架搭建


    项目介绍

    一款 Go 语言基于GoFrame、Vue、ElementUI、MySQL等框架精心打造的一款模块化、插件化、高性能的前后端分离架构敏捷开发框架,可快速搭建前后端分离后台管理系统,本着简化开发、提升开发效率的初衷,框架自研了一套个性化的组件,实现了可插拔的组件式开发方式,同时为了敏捷快速开发,框架特地集成了代码生成器,完全自主研发了自定义GO后端服务模板和前端Vue自定义模板,可以根据已建好的表结构,可以快速的一键生成整个模块的所有代码和增删改查等等功能业务,真正实现了低代码开发方式,极大的节省了人力成本的同时提高了开发效率,缩短了研发周期,是一款真正意义上实现组件化、可插拔式的敏捷开发框架。

    项目特点

    • 模块化、松耦合
    • 模块丰富、开箱即用
    • 简洁易用、快速接入
    • 文档详尽、易于维护
    • 自顶向下、体系化设计
    • 统一框架、统一组件、降低选择成本
    • 开发规范、设计模式、代码分层模型
    • 强大便捷的开发工具链
    • 完善的本地中文化支持
    • 设计为团队及企业使用

    内置模块

    • 用户管理:用于维护管理系统的用户,常规信息的维护与账号设置。
    • 角色管理:角色菜单管理与权限分配、设置角色所拥有的菜单权限。
    • 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
    • 职级管理:主要管理用户担任的职级。
    • 岗位管理:主要管理用户担任的岗位。
    • 部门管理:主要管理系统组织架构,对组织架构进行统一管理维护。
    • 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
    • 登录日志:系统登录日志记录查询包含登录异常。
    • 字典管理:对系统中常用的较为固定的数据进行统一维护。
    • 配置管理:对系统的常规配置信息进行维护,网站配置管理功能进行统一维护。
    • 城市管理:统一对全国行政区划进行维护,对其他模块提供行政区划数据支撑。
    • 友链管理:对系统友情链接、合作伙伴等相关外链进行集成维护管理的模块。
    • 个人中心:主要是对当前登录用户的个人信息进行便捷修改的功能。
    • 广告管理:主要对各终端的广告数据进行管理维护。
    • 站点栏目:主要对大型系统网站等栏目进行划分和维护的模块。
    • 会员管理:对各终端注册的会员进行统一的查询与管理的模块。
    • 网站配置:对配置管理模块的数据源动态解析与统一维护管理的模块。
    • 通知公告:系统通知公告信息发布维护。
    • 代码生成:一键生成模块CRUD的功能,包括后端Go和前端Vue等相关代码。
    • 案例演示:常规代码生成器一键生成后的演示案例。

    软件信息

    系统演示

    演示地址:http://manage.goframe.elevue.easygoadmin.vip

    版本说明

    版本名称版本说明版本地址
    GoFrame+Layui混编版采用GoFrame、Layui等框架研发https://gitee.com/easygoadmin/EasyGoAdmin_GoFrame_Layui
    Beego+Layui混编版采用Beego、Layui等框架研发https://gitee.com/easygoadmin/EasyGoAdmin_Beego_Layui
    Gin+Layui混编版采用Gin、Layui等框架研发https://gitee.com/easygoadmin/EasyGoAdmin_Gin_Layui
    Iris+Layui混编版采用Iris、Layui等框架研发https://gitee.com/easygoadmin/EasyGoAdmin_Iris_Layui
    Revel+Layui混编版采用Revel、Layui等框架研发https://gitee.com/easygoadmin/EasyGoAdmin_Revel_Layui
    Echo+Layui混编版采用Echo、Layui等框架研发https://gitee.com/easygoadmin/EasyGoAdmin_Echo_Layui
    GoFrame+EleVue前后端分离版采用GoFrame、Vue、ElementUI等框架研发前后端分离版本https://gitee.com/easygoadmin/EasyGoAdmin_GoFrame_EleVue
    Beego+EleVue前后端分离版采用Beego、Vue、ElementUI等框架研发前后端分离版本https://gitee.com/easygoadmin/EasyGoAdmin_Beego_EleVue
    Gin+EleVue前后端分离版采用Gin、Vue、ElementUI等框架研发前后端分离版本https://gitee.com/easygoadmin/EasyGoAdmin_Gin_EleVue
    Iris+EleVue前后端分离版采用Iris、Vue、ElementUI等框架研发前后端分离版本https://gitee.com/easygoadmin/EasyGoAdmin_Iris_EleVue
    Revel+EleVue前后端分离版采用Revel、Vue、ElementUI等框架研发前后端分离版本https://gitee.com/easygoadmin/EasyGoAdmin_Revel_EleVue
    Echo+EleVue前后端分离版采用Echo、Vue、ElementUI等框架研发前后端分离版本https://gitee.com/easygoadmin/EasyGoAdmin_Echo_EleVue
    GoFrame+AntdVue前后端分离版采用GoFrame、Vue、AntDesign等框架研发前后端分离版本https://gitee.com/easygoadmin/EasyGoAdmin_GoFrame_AntdVue
    Beego+AntdVue前后端分离版采用Beego、Vue、AntDesign等框架研发前后端分离版本https://gitee.com/easygoadmin/EasyGoAdmin_Beego_AntdVue
    Gin+AntdVue前后端分离版采用Gin、Vue、AntDesign等框架研发前后端分离版本https://gitee.com/easygoadmin/EasyGoAdmin_Gin_AntdVue
    Iris+AntdVue前后端分离版采用Iris、Vue、AntDesign等框架研发前后端分离版本https://gitee.com/easygoadmin/EasyGoAdmin_Iris_AntdVue
    Revel+AntdVue前后端分离版采用Revel、Vue、AntDesign等框架研发前后端分离版本https://gitee.com/easygoadmin/EasyGoAdmin_Revel_AntdVue
    Echo+AntdVue前后端分离版采用Echo、Vue、AntDesign等框架研发前后端分离版本https://gitee.com/easygoadmin/EasyGoAdmin_Echo_AntdVue

    项目结构

    ├── app             // 应用目录
    │   ├── controller  // 控制器
    │   ├── dao         // DAO层
    │   ├── model       // 模型层
    │   └── service     // 服务层
    │   └── utils       // 系统工具
    ├── boot
    ├── config          // 系统配置
    ├── docker
    ├── document        // 文档目录
    ├── i18n            // 国际化
    ├── library         // 类库
    ├── packed
    ├── public          // 资源目录
    ├── router          // 路由
    ├── template        // 自定义模板
    ├── Dockerfile
    ├── go.mod
    └── main.go
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    路由注册

    func init() {
    	s := g.Server()
    	// 跨域处理
    	s.Use(middleware.CORS)
    	// 登录验证中间件
    	s.Use(middleware.CheckLogin)
    	// 操作日志中间件
    	s.Use(middleware.OperLog)
    	// 登录日志中间件
    	s.Use(middleware.LoginLog)
    
    	/* 文件上传 */
    	s.Group("/upload", func(group *ghttp.RouterGroup) {
    		// 上传图片
    		group.POST("/uploadImage", controller.Upload.UploadImage)
    	})
    
    	/* 登录注册 */
    	s.Group("/", func(group *ghttp.RouterGroup) {
    		group.GET("/", controller.Login.Login)
    		group.ALL("/login", controller.Login.Login)
    		group.GET("/captcha", controller.Login.Captcha)
    		group.ALL("/updateUserInfo", controller.Index.UpdateUserInfo)
    		group.ALL("/updatePwd", controller.Index.UpdatePwd)
    		group.GET("/logout", controller.Index.Logout)
    	})
    
    	s.Group("index", func(group *ghttp.RouterGroup) {
    		group.GET("/menu", controller.Index.Menu)
    		group.GET("/user", controller.Index.User)
    	})
    
    	/* 用户管理 */
    	s.Group("user", func(group *ghttp.RouterGroup) {
    		group.GET("/list", controller.User.List)
    		group.GET("/detail", controller.User.Detail)
    		group.POST("/add", controller.User.Add)
    		group.PUT("/update", controller.User.Update)
    		group.DELETE("/delete/:ids", controller.User.Delete)
    		group.PUT("/status", controller.User.Status)
    		group.PUT("/resetPwd", controller.User.ResetPwd)
    		group.GET("/checkUser", controller.User.CheckUser)
    	})
    
    	/* 职级管理 */
    	s.Group("level", func(group *ghttp.RouterGroup) {
    		group.GET("/list", controller.Level.List)
    		group.POST("/add", controller.Level.Add)
    		group.PUT("/update", controller.Level.Update)
    		group.DELETE("/delete/:ids", controller.Level.Delete)
    		group.PUT("/status", controller.Level.Status)
    		group.GET("/getLevelList", controller.Level.GetLevelList)
    	})
    
    	/* 岗位路由 */
    	s.Group("position", func(group *ghttp.RouterGroup) {
    		group.GET("/list", controller.Position.List)
    		group.POST("/add", controller.Position.Add)
    		group.PUT("/update", controller.Position.Update)
    		group.DELETE("/delete/:ids", controller.Position.Delete)
    		group.PUT("/status", controller.Position.Status)
    		group.GET("/getPositionList", controller.Position.GetPositionList)
    	})
    
    	/* 角色路由 */
    	s.Group("role", func(group *ghttp.RouterGroup) {
    		group.GET("/list", controller.Role.List)
    		group.POST("/add", controller.Role.Add)
    		group.PUT("/update", controller.Role.Update)
    		group.DELETE("/delete/:ids", controller.Role.Delete)
    		group.PUT("/status", controller.Role.Status)
    		group.GET("/getRoleList", controller.Role.GetRoleList)
    	})
    
    	/* 角色菜单权限 */
    	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("/list", controller.Dept.List)
    		group.POST("/add", controller.Dept.Add)
    		group.PUT("/update", controller.Dept.Update)
    		group.DELETE("/delete/:ids", controller.Dept.Delete)
    		group.GET("/getDeptList", controller.Dept.GetDeptList)
    	})
    
    	/* 菜单管理 */
    	s.Group("menu", func(group *ghttp.RouterGroup) {
    		group.GET("/list", controller.Menu.List)
    		group.GET("/detail", controller.Menu.Detail)
    		group.POST("/add", controller.Menu.Add)
    		group.PUT("/update", controller.Menu.Update)
    		group.DELETE("/delete/:ids", controller.Menu.Delete)
    	})
    
    	/* 操作日志 */
    	s.Group("operlog", func(group *ghttp.RouterGroup) {
    		group.GET("/list", controller.OperLog.List)
    	})
    
    	/* 登录日志 */
    	s.Group("loginlog", func(group *ghttp.RouterGroup) {
    		group.GET("/list", controller.LoginLog.List)
    		group.DELETE("/delete/:ids", controller.LoginLog.Delete)
    	})
    
    	/* 城市管理 */
    	s.Group("city", func(group *ghttp.RouterGroup) {
    		group.GET("/list", controller.City.List)
    		group.POST("/add", controller.City.Add)
    		group.PUT("/update", controller.City.Update)
    		group.DELETE("/delete/:ids", controller.City.Delete)
    		group.POST("/getChilds", controller.City.GetChilds)
    	})
    
    	/* 字典管理 */
    	s.Group("dict", func(group *ghttp.RouterGroup) {
    		group.GET("/list", controller.Dict.List)
    		group.POST("/add", controller.Dict.Add)
    		group.PUT("/update", controller.Dict.Update)
    		group.DELETE("/delete/:ids", controller.Dict.Delete)
    	})
    
    	/* 字典项管理 */
    	s.Group("dictdata", func(group *ghttp.RouterGroup) {
    		group.GET("/list", controller.DictData.List)
    		group.POST("/add", controller.DictData.Add)
    		group.PUT("/update", controller.DictData.Update)
    		group.DELETE("/delete/:ids", controller.DictData.Delete)
    	})
    
    	/* 配置管理 */
    	s.Group("config", func(group *ghttp.RouterGroup) {
    		group.GET("/list", controller.Config.List)
    		group.POST("/add", controller.Config.Add)
    		group.PUT("/update", controller.Config.Update)
    		group.DELETE("/delete/:ids", controller.Config.Delete)
    	})
    
    	/* 配置项管理 */
    	s.Group("configdata", func(group *ghttp.RouterGroup) {
    		group.GET("/list", controller.ConfigData.List)
    		group.POST("/add", controller.ConfigData.Add)
    		group.PUT("/update", controller.ConfigData.Update)
    		group.DELETE("/delete/:ids", controller.ConfigData.Delete)
    		group.PUT("/status", controller.ConfigData.Status)
    	})
    
    	/* 友链管理 */
    	s.Group("link", func(group *ghttp.RouterGroup) {
    		group.GET("/list", controller.Link.List)
    		group.POST("/add", controller.Link.Add)
    		group.PUT("/update", controller.Link.Update)
    		group.DELETE("/delete/:ids", controller.Link.Delete)
    		group.PUT("/status", controller.Link.Status)
    	})
    
    	/* 站点管理 */
    	s.Group("item", func(group *ghttp.RouterGroup) {
    		group.GET("/list", controller.Item.List)
    		group.POST("/add", controller.Item.Add)
    		group.PUT("/update", controller.Item.Update)
    		group.DELETE("/delete/:ids", controller.Item.Delete)
    		group.PUT("/status", controller.Item.Status)
    		group.GET("/getItemList", controller.Item.GetItemList)
    	})
    
    	/* 栏目管理 */
    	s.Group("itemcate", func(group *ghttp.RouterGroup) {
    		group.GET("/list", controller.ItemCate.List)
    		group.POST("/add", controller.ItemCate.Add)
    		group.PUT("/update", controller.ItemCate.Update)
    		group.DELETE("/delete/:ids", controller.ItemCate.Delete)
    		//group.GET("/getCateTreeList", controller.ItemCate.GetCateTreeList)
    		group.GET("/getCateList", controller.ItemCate.GetCateList)
    	})
    
    	/* 广告位管理 */
    	s.Group("adsort", func(group *ghttp.RouterGroup) {
    		group.GET("/list", controller.AdSort.List)
    		group.POST("/add", controller.AdSort.Add)
    		group.PUT("/update", controller.AdSort.Update)
    		group.DELETE("/delete/:ids", controller.AdSort.Delete)
    		group.GET("/getAdSortList", controller.AdSort.GetAdSortList)
    	})
    
    	/* 广告管理 */
    	s.Group("ad", func(group *ghttp.RouterGroup) {
    		group.GET("/list", controller.Ad.List)
    		group.POST("/add", controller.Ad.Add)
    		group.PUT("/update", controller.Ad.Update)
    		group.DELETE("/delete/:ids", controller.Ad.Delete)
    		group.PUT("/status", controller.Ad.Status)
    	})
    
    	/* 通知管理 */
    	s.Group("notice", func(group *ghttp.RouterGroup) {
    		group.GET("/list", controller.Notice.List)
    		group.POST("/add", controller.Notice.Add)
    		group.PUT("/update", controller.Notice.Update)
    		group.DELETE("/delete/:ids", controller.Notice.Delete)
    		group.PUT("/status", controller.Notice.Status)
    	})
    
    	/* 网站设置 */
    	s.Group("configweb", func(group *ghttp.RouterGroup) {
    		group.GET("/index", controller.ConfigWeb.Index)
    		group.PUT("/save", controller.ConfigWeb.Save)
    	})
    
    	/* 会员等级 */
    	s.Group("memberlevel", func(group *ghttp.RouterGroup) {
    		group.GET("/list", controller.MemberLevel.List)
    		group.POST("/add", controller.MemberLevel.Add)
    		group.PUT("/update", controller.MemberLevel.Update)
    		group.DELETE("/delete/:ids", controller.MemberLevel.Delete)
    		group.GET("/getMemberLevelList", controller.MemberLevel.GetMemberLevelList)
    	})
    
    	/* 会员管理 */
    	s.Group("member", func(group *ghttp.RouterGroup) {
    		group.GET("/list", controller.Member.List)
    		group.POST("/add", controller.Member.Add)
    		group.PUT("/update", controller.Member.Update)
    		group.DELETE("/delete/:ids", controller.Member.Delete)
    		group.PUT("/status", 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("/list", controller.Generate.List)
    		group.POST("/generate", controller.Generate.Generate)
    		group.POST("/batchGenerate", controller.Generate.BatchGenerate)
    	})
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242
    • 243

    特别鸣谢

    感谢GoFrameVueElementUI等优秀开源项目。

    版权声明

    本文章版权归作者所有,未经作者允许禁止任何转载、采集,作者保留一切追究的权利;

  • 相关阅读:
    pentaho(keetle)数据同步实践
    矩阵快速幂 笔记加理解
    K8S -----二进制搭建 Kubernetes v1.20
    设计模式-工厂方法
    响应式 API:核心
    华为云服务器(Centos7)安装与卸载mysql8
    【零基础算法】链表算法
    理论篇2:深度学习之----优化器(1)
    SSM+服装管理系统 毕业设计-附源码080948
    大数据之LibrA数据库系统概览
  • 原文地址:https://blog.csdn.net/weixin_50196917/article/details/125505543