非常感觉iris框架极其开发者的帮助~
现在扯犊子,这个库主要解决的一个小问题:
这我相信90%的golang开发者在使用web框架的时候都是基于struct生成的各类表模型
但是这两个库都没有 就很难受 想想python django自带管理后台 再看看php 泪牛满面
我去提了issue,并且等待很长时间都没有这种计划的支持 可能也许是没有泛型 写这种玩意没有动力吧
所以没法子 自己业务又需要 就简单地搞了一个
但是时间和精力都有限 只能从我自己的业务出发 所以我使用的技术栈:
- iris
- xorm
- casbin -> rbac
- react -> ant.design
希望可以帮到相同技术栈的朋友 后期若有必要会进行基础适配 比如说支持gin 支持gorm
安装
go get https://github.com/23233/simple_admin
案例 -> https://github.com/23233/simple_admin/tree/master/_examples
预备 -> 定义你的表数据struct
type TestModelA struct {
Id uint64 `xorm:"autoincr pk unique" json:"id"`
Name string `xorm:"varchar(20)"`
}
type TestModelB struct {
Id uint64 `xorm:"autoincr pk unique" json:"id"`
Desc string `xorm:"varchar(60)"`
}
预备 -> 初始化你的xorm引擎
Engine, err = xorm.NewEngine("mysql", dbUrl)
预备 -> 初始化iris
app := iris.New()
起飞 -> 注册simple_admin
modelList := []interface{}{new(TestModelA), new(TestModelB)}
_, err := simple_admin.New(simple_admin.Config{
Engine: engine,
App: app,
ModelList: modelList,
Name: "app name",
RunSync: true, // this is xorm sync2
Prefix: "/admin", // path prefix like app.Prefix("/admin")
})
起飞 -> 打开浏览器访问 http://127.0.0.1:8080/admin
app.Listen(":8080")
最重要的 不支持 xorm删除数据都是使用 Unscoped 方法 也就是彻底物理删除deleted
标签- 最好使用自带的后台用户管理模型 减少麻烦
example: sp("key:value") sp("key(value)") sp("key('value')")
- autogen -> 标记这个字段是代码生成不经过用户
sp("autogen")
- lineTo -> 如果使用自定义操作 这个tag对应的字段会在新增时自动填充选择的值为默认值
sp("lineTo(Id)")
- fk -> 外键支持,1对1 1对多,目前只支持主键id 必须拥有id字段*
sp("fk('ComplexModelC')")
sp("fk('ComplexModelC') multiple")
- tag -> 前端显示的标签 目前支持: img
sp:"tag(img)"
- SpInsertBefore
- SpInsertAfter
- SpUpdateBefore
- SpUpdateAfter
- SpDeleteBefore(id uint64) // 因为删除使用 unscoped 物理删除 所以仅接收一个id字段
- SpDeleteAfter(id uint64) // 因为删除使用 unscoped 物理删除 所以仅接收一个id字段
- 方法名称只要是 SpAction开头就行 比如说 SpAction() SpAction123() 都行 必须有返回 simple_admin.CustomAction
- [] full test (不打算近期支持)
- [] gorm support (看反馈)
- [] gin support (看反馈)
- dashboard (数据可视化)
- simple event monitor (事件监听)
- add spider visit monitor options enable! (自带爬虫检测 可选开启)
- custom action (自定义操作)
- [] fine permission manage (看反馈)
- [] support micro frontend , use qiankun (这样大家就可以自定义页面 二次开发)
- [] beat more features