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 }
而後從新運行程序,再訪問一下博客用戶的管理頁面,能夠看到標題等內容已經被改變:
是否是很簡單~這樣就完成了數據表最基礎的管理後臺的搭建。更多細節,留待你們在文檔中去發現!