

使用GoAdmin极速搭建golang应用管理后台
source link: https://studygolang.com/articles/27594
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

GoAdmin介绍
GoAdmin是一个基于golang的数据可视化后台搭建框架,内置了管理后台的rbac权限系统,登录以及一个crud逻辑与视图生成的插件。支持不同主题更换,支持添加插件形式添加不同应用进行功能扩展。
github地址: https://github.com/GoAdminGroup
在线demo: https://demo.go-admin.cn
文档地址: https://book.go-admin.cn/zh
上手
这里直接实战介绍如何上手,最小化的实现一个真实应用的数据管理后台。我从github搜索到了这样一个golang的web例子: eddycjy/go-gin-example ,我们以这个简单例子为例来搭建这个应用的管理后台。
准备工作
第一步
首先,把这个应用的 sql 导入进数据库:
第二步
接着我们安装一下GoAdmin的命令行工具:
GO111MODULE=on GOPROXY=https://goproxy.cn go install github.com/GoAdminGroup/go-admin/adm
注意:这里使用了go module的方式加载依赖,不了解go module的话先百度一下。同时设置了代理,加快依赖的下载。
安装完后,你应该可以在mac或linux的终端或windows的cmd成功执行以下命令:
> adm -V GoAdmin CLI v1.2.7
注意:如果不成功,检查一下你是否有将 $GOPATH/bin
这个路径加入到你的环境变量路径中,如果你不知道什么是 环境变量路径 可以百度一下先,再进行后面步骤
第三步
导入GoAdmin所需的 sql 文件进数据库中。
到这里准备工作完毕,开始写代码。
生成数据模型文件
我们在任意位置创建我们的项目文件夹,比如叫:go-gin-example-admin,然后进入文件夹中,执行以下命令:
> adm generate
接着会出现几个菜单,首先让你选择数据库驱动,我们用的是mysql,因此选择mysql,按 回车 进行选择。
? choose a driver [Use arrows to move, type to filter, enter to select] > mysql postgresql sqlite mssql
然后我们填写好对应的数据信息:
? choose a driver mysql ? sql address 127.0.0.1 ? sql port 3306 ? sql username root ? sql password **** ? sql database name gin-example-blogs
接着选择要管理的表格,我们按 空格 选择全部,然后回车:
? choose table to generate [Use arrows to move, space to select, type to filter] > [x] [select all] [ ] blog_article [ ] blog_auth [ ] blog_tag
接着设置好文件的包名,数据模型文件的对应数据库连接名(默认是default)按回车即可,以及输出路径,我们都直接回车使用默认值。
? set package name main ? set connection name default ? set file output path ./
然后就可以看到在文件夹下生成了几个文件:
. ├── tables.go ├── blog_article.go ├── blog_auth.go └── blog_tag.go
编写main.go
生成完数据模型文件后,我们在文件夹下创建main.go,内容如下:
package main import ( _ "github.com/GoAdminGroup/go-admin/adapter/gin" // 适配器 _ "github.com/GoAdminGroup/go-admin/modules/db/drivers/mysql" // sql 驱动 _ "github.com/GoAdminGroup/themes/adminlte" // ui主题 "github.com/GoAdminGroup/go-admin/engine" "github.com/GoAdminGroup/go-admin/examples/datamodel" "github.com/GoAdminGroup/go-admin/modules/config" "github.com/GoAdminGroup/go-admin/modules/db" "github.com/GoAdminGroup/go-admin/modules/language" "github.com/GoAdminGroup/go-admin/template" "github.com/GoAdminGroup/go-admin/template/chartjs" "github.com/gin-gonic/gin" "io/ioutil" ) func main() { r := gin.Default() gin.SetMode(gin.ReleaseMode) gin.DefaultWriter = ioutil.Discard eng := engine.Default() template.AddComp(chartjs.NewChart()) if err := eng.AddConfig(config.Config{ Databases: config.DatabaseList{ "default": { Host: "127.0.0.1", Port: "3306", User: "root", Pwd: "root", Name: "gin-example-blogs", MaxIdleCon: 50, MaxOpenCon: 150, Driver: db.DriverMysql, }, }, UrlPrefix: "admin", IndexUrl: "/", Debug: true, Language: language.CN, }). AddGenerators(Generators). Use(r); err != nil { panic(err) } r.Static("/uploads", "./uploads") eng.HTML("GET", "/admin", datamodel.GetContent) _ = r.Run(":9033") }
这里简单的解释一下:我们实例化了一个GoAdmin引擎对象 eng
,然后调用 AddConfig
方法传入配置,然后使用 AddGenerators
方法传入数据模型文件,接着调用 Use
挂载到 gin
框架上面。
现在我们尝试运行一下:
> go run . [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached. [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - using env: export GIN_MODE=release - using code: gin.SetMode(gin.ReleaseMode) GoAdmin is now running. Running in "debug" mode. Switch to "release" mode in production.
看到GoAdmin is now running意味着运行成功了,接着我们访问一下: http://localhost:9033/admin/login
可以看到已经运行起来:
默认账号密码都是:admin
设置菜单与介绍数据模型文件
登录进去后,访问 菜单设置页 ,我们需要设置一下菜单,才能从菜单进入我们的表格管理页面。这时我们需要看一下我们文件夹下的 tables.go
文件。
package main import "github.com/GoAdminGroup/go-admin/plugins/admin/modules/table" // The key of Generators is the prefix of table info url. // The corresponding value is the Form and Table data. // // http://{{config.Domain}}:{{Port}}/{{config.Prefix}}/info/{{key}} // // example: // // "blog_article" => http://localhost:9033/admin/info/blog_article // "blog_auth" => http://localhost:9033/admin/info/blog_auth // "blog_tag" => http://localhost:9033/admin/info/blog_tag // // example end // var Generators = map[string]table.Generator{ "blog_article": GetBlogArticleTable, "blog_auth": GetBlogAuthTable, "blog_tag": GetBlogTagTable, // generators end }
这个文件声明了一个map变量,这个变量的key是我们数据表管理路由的前缀,对应的值就是我们的数据模型生成函数。所以我们明白了,我们菜单需要设置的地址:
新建完成对应的几个菜单后,我们强制刷新一下页面,就可以看到左边已经出现了对应的菜单:
我们点博客用户的菜单,进入用户的管理页面。
我们想要对这个页面进行一些设置,比方说页面的标题 Blog_auth
,页面表格的表头字段名。这时我们需要改生成的数据模型文件,点开文件夹下的文件 blog_auth.go
,我们将其如下改动:
package main import ( "github.com/GoAdminGroup/go-admin/context" "github.com/GoAdminGroup/go-admin/modules/db" "github.com/GoAdminGroup/go-admin/plugins/admin/modules/table" "github.com/GoAdminGroup/go-admin/template/types/form" ) func GetBlogAuthTable(ctx *context.Context) table.Table { blogAuthTable := table.NewDefaultTable(table.DefaultConfigWithDriver("mysql")) info := blogAuthTable.GetInfo() info.AddField("ID", "id", db.Int).FieldFilterable() info.AddField("用户名", "username", db.Varchar) info.AddField("密码", "password", db.Varchar) info.SetTable("blog_auth").SetTitle("博客用户").SetDescription("博客用户") formList := blogAuthTable.GetForm() formList.AddField("ID", "id", db.Int, form.Default).FieldNotAllowAdd() formList.AddField("用户名", "username", db.Varchar, form.Text) formList.AddField("密码", "password", db.Varchar, form.Password) formList.SetTable("blog_auth").SetTitle("博客用户").SetDescription("博客用户") return blogAuthTable }
然后重新运行程序,再访问一下博客用户的管理页面,可以看到标题等内容已经被改变:
是不是很简单~这样就完成了数据表最基础的管理后台的搭建。更多细节,留待大家在文档中去发现!
Recommend
-
26
在这篇简短的文章中,我将说明使用 Apex Up 对任何 Golang 应用程序或 API 是如何快速的生产出无服务环境的。这篇文章假设你在你的机器上配置了
-
21
作者:bookerzhao,腾讯 CSIG web前端开发工程师 Github 为开源项目提供了用于静态页面展示的 Pages 服务,很多开发者都在上面托管了自己的静...
-
14
前面我们介绍 怎么快速上手搭建一个管理后台 ,这一节就介绍一下怎么自定义登录的页面。 框架内置提供了一个登陆界面,但有时候我们想要自定义一个,这时我们需要...
-
11
使用 ServiceWorker 打造极速浏览体验文章收录于专栏 方凳雅集性能优化是前端一个经久不衰的话题,我们都希望能给用户带来性能更好、更快的体验。优化页面的性能有非常多的手段,本文主要...
-
25
摄影:产品经理 中奖中了一顿饭 在Python中,如果要判断一个字符串是否...
-
10
百小僧:拥抱.NET 5,从这个极速开发Web应用框架开始,Fur开源了!今年年初,微软 .NET 程序管理总监 Sco...
-
4
星搭 - 极速应用搭建,低代码平台,小程序、网页、表单一键生成 星搭 StaringOS 是一款 可视化应用生成器,一款封装不同平台底...
-
9
Docker 极速入门教程02 - 镜像与容器管理 Published at: 2016-08-07 | Reading: 1842 words ~4min | PV/UV: 1/1
-
5
GoAdmin 2020-08-18 golang 约 275 字 预计阅读 1 分钟
-
7
1分钟 Serverless 极速搭建真网站 领猫超卡之《极速搭建 Zblog 博客系统》场景体验 原创 阿里云...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK