项目介绍

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

项目特点

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

内置模块

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

软件信息

  • 软件名称:EasyGoAdmin敏捷开发框架GoFrame+EleVue版本
  • 官网网址:http://www.easygoadmin.vip
  • 文档网址:http://docs.goframe.elevue.easygoadmin.vip

系统演示

演示地址: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

路由注册

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)})
}

特别鸣谢

感谢GoFrame、Vue、ElementUI等优秀开源项目。

版权声明

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

GoFrame+vue的前后端分离开源项目相关推荐

  1. gin+vue的前后端分离开源项目

    该项目是gin+vue的前后端分离项目,使用gorm访问MySQL,其中vue前端是使用vue-element-admin框架简单实现的: go后台使用jwt,对API接口进行权限控制.此外,Web页 ...

  2. 视频教程-SpringBoot2+Vue+AntV前后端分离开发项目实战-Java

    SpringBoot2+Vue+AntV前后端分离开发项目实战 10多年互联网一线实战经验,现就职于大型知名互联网企业,架构师, 有丰富实战经验和企业面试经验:曾就职于某上市培训机构数年,独特的培训思 ...

  3. 【狂神说】分析前后端分离开源项目?

    文章目录 1.如何分析开源项目 项目简介 项目源码 2.观察开源项目 3.开源项目下载 4.跑起来是第一步 5.前后端分离项目固定套路 6.如何找到一个开源项目 1.如何分析开源项目 学习的方式: 不 ...

  4. SpringBoot+mybatis+Vue实现前后端分离小项目

    spring-boot-starter-parent 2.2.5.RELEASE org.springframework.boot spring-boot-starter org.mybatis.sp ...

  5. 基于SSM+vue的前后端分离小项目(用户后台管理系统的实现)

    本篇博客将介绍现今主要流行的前后端分离方式构建管理系统的实现 项目搭建环境: windows系统 服务器:Tomcat 9.0 项目运行环境:JDK1.8 前端主要技术:HTML.CSS.VUE前端框 ...

  6. B站云E办Vue+SpringBoot前后端分离项目——MVC三层架构搭建后台项目

    本项目来源B站云E办,笔记整理了项目搭建的过程和涉及的知识点.对于学习来说,不是复制粘贴代码即可,要知其然知其所以然.希望我的笔记能为大家提供思路,也欢迎各位伙伴的指正. 项目前端学习笔记目录 B站云 ...

  7. laravel + Vue 前后端分离 之 项目配置 - 开发环境

    既然你来到查看这篇文章,那么你应该知道PHP 版本 >=7. 接着看一下目录 |-blog |-- api |-- front 目录外部很简单,,不多说了,赶紧看重点 配置Laravel 作为前 ...

  8. Vue 实现前后端分离项目

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Vue实现前后端分离项目的初体验 经过之前学习的Vue的知识: vue基本指令 vue组件 vue- ...

  9. Element-UI + Vue.js + SpringBoot 实现前后端分离入门项目

    Element UI 项目简介与演示 刷新页面时让组件默认为当前路由路径 删除时确认 分页功能的实现 el-date-picke 日期少一天 前端部分源码:https://github.com/szl ...

  10. 新手摸爬滚打:vue+springboot前后端分离项目演示(三)——axios实现前后端交互

    导语:路漫漫其修远兮,吾将上下而求索 前篇: 新手摸爬滚打:vue+springboot前后端分离项目演示(一)--vue cli创建vue2项目 新手摸爬滚打:vue+springboot前后端分离 ...

最新文章

  1. [CES 2018] TPCast发布升级版本,将支持微软MR设备
  2. MAX3232和MAX232的具体差别
  3. seaborn.FacetGrid
  4. centos apt-get java_CentOS安装jdk的三种方法
  5. 一张图,看懂阿里云的“飞天”史
  6. 实力打脸: 量子隐形传输与 “瞬间移动” 毫无关系
  7. 用python机器学习实现新闻关键词的抽取,你学会了吗?
  8. 看我打脸Message Pack
  9. 小米8大幅降价促销 性价比十足!
  10. ansible-playbook Roles include
  11. 授权MySQL账户访问指定数据库
  12. JavaScript闭包 懂不懂由你反正我是懂了
  13. excel内容合并脚本
  14. 和平精英为什么进不去显示无法连接服务器,和平精英为什么进不去 进不去解决方法[多图]...
  15. Ubuntu 18.04 安装Wine 微信
  16. 线性代数学习笔记——行列式的性质及拉普拉斯定理——10. k阶子式、余子式、代数余子式
  17. Python攻关之模块(2)
  18. liferay mysql driver_Liferay安装笔记(默认安装使用Mysql数据库)
  19. NFC天线工作原理、设计
  20. 超级简单的方法实现虚拟机和主机之间文件的复制和粘贴

热门文章

  1. 迪普三层核心DPX8000a3实现爱快软路由上网
  2. 单片机应用系统设计技术——串行口方式0 拓展并行输出端口 02 74LS164芯片
  3. php 2037时间问题
  4. C++虚函数指针虚函数表
  5. 以太坊(ethereum)开发DApp应用的入门区块链技术教程
  6. 鸟哥linux私房菜读后,鸟哥的Linux私房菜读书笔记(1)
  7. 关于春天的古诗(关于春天的古诗有哪些)
  8. WinForGIFSicle 1.0.0.1 免费开源版,基于GIFSicle的开源可视化批量GIF压缩工具
  9. logisitic 回归 +极大似然法 + 梯度下降法 (迭代优化)
  10. U8采购入库单参照到货单查不到内容