(摘) GoAdmin

声明:内容源自网络,版权归原作者所有。若有侵权请在网页聊天中联系我

GoAdmin 是一个基于 golang 面向生产的数据可视化管理平台搭建框架,可以让你使用简短的代码在极短时间内搭建起一个管理后台。

官方文档

Github

简单上手实例

直接点先看看示例:

使用模块go module加载依赖

  1. git clone https://github.com/GoAdminGroup/example.git

  2. GOPROXY=https://goproxy.cn GO111MODULE=on go run .

  3. 访问: http://localhost:9033/admin

很快的就搭起来了,样子也还不错。

部份文件或目录:

adm_config.ini adm配置文件(adm工具配置文件)

admin.db 示例中使用简单的sqlite3数据库

config.json 配置文件

目录html 前端html文件

目录models ORM模型文件

目录pages 页面控制器

目录tables 数据模型表格文件

make build编译出的二进制文件,复制admin.db和config.json文件,系统就独立运行起来。对其upx压缩后运行也很正常。

关于sqlite3的编译,需要修改Makefile中CGO_ENABLED=1,否则出现以下错误:

panic: Binary was compiled with ‘CGO_ENABLED=0’, go-sqlite3 requires cgo to work. This is a stub

准备

GoAdmin目前内置支持主流SQL数据库(mysql/postgresql/sqlite/mssql)

下载它的工具: http://doc.go-admin.cn/zh/install/,但我 go install github.com/GoAdminGroup/go-admin/adm 没成功。

正确方法如下:

  1. 新建目录,然后初始化 go mod init adm

  2. go get github.com/GoAdminGroup/go-admin/adm

  3. go install github.com/GoAdminGroup/go-admin/adm

  4. 在gopath中可以找到编译好的adm。当前版本1.2.22

看起来它基本支持常见的框架: gin beego fasthttp buffalo echo gorilla/mux iris chi gf

开始

通过工具新建工程 adm init -l cn

它是命令行方式的一步步提问,easy。 它更是人性的加入了web设置:adm init web -l cn

我选择了sqlite3方便使用,下载基本的数据库:https://gitee.com/go-admin/go-admin/raw/master/data/admin.db

go mod init goAdmin 初始化模块

go mod tidy 添加相关模块

go run main.go

运行起来了,文件没几个,分别看看。

package main

import (
	"io/ioutil"
	"log"
	"os"
	"os/signal"

	_ "github.com/GoAdminGroup/go-admin/adapter/gin"               // 框架适配器,我选择了gin
	_ "github.com/GoAdminGroup/go-admin/modules/db/drivers/sqlite" // sqlite3驱动
	_ "github.com/GoAdminGroup/themes/sword"                       // 样式主题

	"github.com/GoAdminGroup/go-admin/engine"
	"github.com/GoAdminGroup/go-admin/template"
	"github.com/GoAdminGroup/go-admin/template/chartjs"
	"github.com/gin-gonic/gin"

	"goAdmin/models"  //goAdmin是我的项目名称
	"goAdmin/pages"
	"goAdmin/tables"
)

func main() {
	startServer()
}

func startServer() {
	gin.SetMode(gin.ReleaseMode)
	gin.DefaultWriter = ioutil.Discard

	r := gin.Default()

	template.AddComp(chartjs.NewChart())

	eng := engine.Default()  // 实例化一个GoAdmin引擎对象

    // 增加配置与插件,使用Use方法挂载到Web框架中
    // 这里引入你需要管理的业务表配置
	if err := eng.AddConfigFromJSON("./config.json").
		AddGenerators(tables.Generators).  
		Use(r); err != nil {
		panic(err)
	}

	r.Static("/uploads", "./uploads")

	eng.HTML("GET", "/admin", pages.GetDashBoard)
    // 后台的一个测试页面。模板hello.tmpl只需要放右方内容就可了。它会自动放在框架页面中。
	eng.HTMLFile("GET", "/admin/hello", "./html/hello.tmpl", map[string]interface{}{
		"msg": "Hello world",
	})

	models.Init(eng.SqliteConnection())

	_ = r.Run(":8080")

	quit := make(chan os.Signal, 1)
	signal.Notify(quit, os.Interrupt)
	<-quit
	log.Print("closing database connection")
	eng.SqliteConnection().Close()
}

hello.html

<div class="hello">
    <h1>{{index . "msg"}}</h1>
</div>

<style>
    .hello {
        padding: 50px;
        width: 100%;
        text-align: center;
    }
</style>

试图修改一下模板 (看方法

下载模板文件到public解压,在config.json配置文件中命名模板,增加配置项asset_root_path,指向指public目录。

重启服务,在页面后台修改为刚命名的模板。

注意在main.go中添加引用 _ “github.com/GoAdminGroup/themes/adminlte/separation”

然后…

然后,看官方文章就有点跟不上节奏了,不知所云。也不知道是不是开发团队太高端了,看得不明不白。

虽然也可以通过示例来分析学习,不过看不懂官方文档,必然事倍功半。

然后,就没有然后了。