GoAdmin是一个基于golang的数据可视化后台搭建框架,内置了管理后台的rbac权限系统,登陆以及一个crud逻辑与视图生成的插件。支持不一样主题更换,支持添加插件形式添加不一样应用进行功能扩展。mysql
官网:https://www.go-admin.cn
github地址:https://github.com/GoAdminGroup
在线demo:https://demo.go-admin.cn
文档地址:https://book.go-admin.cn/zhlinux
这里直接实战介绍如何上手,最小化的实现一个真实应用的数据管理后台。我从github搜索到了这样一个golang的web例子:eddycjy/go-gin-example,咱们以这个简单例子为例来搭建这个应用的管理后台。git
首先,把这个应用的sql导入进数据库:github
接着咱们安装一下GoAdmin的命令行工具:golang
GO111MODULE=on GOPROXY=https://goproxy.cn go install github.com/GoAdminGroup/go-admin/adm
注意:这里使用了go module的方式加载依赖,不了解go module的话先百度一下。同时设置了代理,加快依赖的下载。web
安装完后,你应该能够在mac或linux的终端或windows的cmd成功执行如下命令:sql
> adm -V GoAdmin CLI v1.2.7
注意:若是不成功,检查一下你是否有将$GOPATH/bin
这个路径加入到你的环境变量路径中,若是你不知道什么是环境变量路径能够百度一下先,再进行后面步骤数据库
导入GoAdmin所需的sql文件进数据库中。windows
到这里准备工做完毕,开始写代码。bash
咱们在任意位置建立咱们的项目文件夹,好比叫: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,内容以下:
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 }
而后从新运行程序,再访问一下博客用户的管理页面,能够看到标题等内容已经被改变:
是否是很简单~这样就完成了数据表最基础的管理后台的搭建。更多细节,留待你们在文档中去发现!