Go-sword(利刃)是一款基于 Go 语言的可视化 web 管理后台生成工具
官方网站 https://sunshinev.github.io/go-sword-home/
她能满足你哪些?
那么 go-sword 可以满足你
根据 MySQL 的表结构,创建完整的管理后台界面,开发者无需再重复手动的创建具有 CRUD 能力的页面 只需要点击按钮即可生成完整的管理后台
go get -u github.com/sunshinev/go-sword
go build
安装完成后,确保go-sword
命令在GOPATH/bin
目录下,可执行
go-sword -db {db_database} -password {db_password} -user {db_uesr} -module {module_name}
例如:go-sword -db blog -password 123456 -user root -module go-sword-app
以上命令,就是连接数据库blog
,用户名root
,密码12345
,在 go-sword 命令的当前目录下创建项目go-sword-app
启动成功的提示
Go-Sword will create new project named go-sword-app in current directory
[Server info]
Server port : 8080
Project module : go-sword-app
[db info]
MySQL host : localhost
MySQL port : 3306
MySQL user : root
MySQL password : 123456
Start successful, server is running ...
Please request: http://localhost:8080
+---------------------------------------------------+
| |
| Welcome to use Go-Sword |
| |
| Visualized tool |
| Fastest to create CRUD background |
| https://github.com/sunshinev/go-sword |
| |
+---------------------------------------------------+
Usage of go-sword:
// 要连接的数据库信息
-db string
MySQL database
-host string
MySQL Host (default "localhost")
// 重要:module 参数单独作解释
-module string
New project module, the same as 'module' in go.mod file. (default "go-sword-app/")
// go-sword 服务启动的默认端口
-p string
Go-sword Server port (default "8080")
-password string
MySQL password
-port int
MySQL port (default 3306)
-user string
MySQL user
-module
参数是代表要创建的项目名称,同时也是新项目go.mod
文件中的module
字段的值,这点请务必保持一致。
新项目会在运行go-sword
命令的当前目录下,直接创建module
目录,作为新项目
Start successful, server is running ...
Please request: http://localhost:8080
根据服务启动的提示,直接点击http://localhost:8080
即可进入 web 的可视化工具页面
Preview
按钮,即可渲染出需要创建的文件select all
全部选择,首次创建包含了项目启动必需的核心文件Generate
按钮,既可以看到提示文件创建成功注意:
select diff & new
按钮,然后点击Generate
按钮进入到我们新创建的项目目录
➜ test tree -L 2
.
└── go-sword-app
├── controller
├── core
├── go.mod
├── go.sum
├── main.go
├── model
├── resource
├── route
└── view
比如说我们,刚刚是在test
目录运行的go-sword
命令,创建的项目就是test/go-sword-app
我们进入test/go-sword-app
目录下按照以下命令启动项目
利用go mod
初始化项目,这里的module
就是我们前面讲到的要与项目名称保持一致!!
go mod init {module}
go run main.go
然后会看到下面的提示,点击http://localhost:8082
既可以进入后台管理界面
Enjoy your system ^ ^
Generated by Go-sword
https://github.com/sunshinev/go-sword
[Server info]
Server port : 8082
[db info]
MySQL host : localhost
MySQL port : 3306
MySQL user : root
MySQL password : 123456
Start successful, server is running ...
Please request: http://localhost:8082
module
的参数,可能还会有更好的解决方案如果想要自定义的话,那么需要注意,Go-sword 项目可以打包成一个那单独的命令来执行,因为将所有的静态文件也进行了打包
静态文件压缩命令如下:
go-bindata -o assets/resource/dist.go -pkg resource resource/dist/...
go-bindata -o assets/stub/stub.go -pkg stub stub/...
go-bindata -o assets/view/view.go -pkg view view/...
点击链接访问腾讯文档高清图例
[腾讯文档] Go-sword 全生命周期 https://docs.qq.com/slide/DWk5sZVhncUpob1hj
下图列出了整个工具的使用过程,如果有问题可以官网Forum留言
1
ikaros 2020-05-05 21:03:25 +08:00
这官网做得真不错,等细看一下。顺带问一下支持 json 字段吗? 我现在用的 qor admin(gorm 那套), 这个现在有个问题就是 json 字段只能做成文本框输入, 而且不能在新增和修改之后做一些自定义操作
|
2
dodo2012 2020-05-05 22:25:52 +08:00
优秀。
|
3
ila 2020-05-05 22:35:36 +08:00 via Android
点赞,已 star
|
4
ArJun 2020-05-05 22:51:10 +08:00
轮子的想法不错,支持
|
5
Smash 2020-05-05 22:55:22 +08:00
设计是楼主自己搞的吗?
|
6
forrestshuang 2020-05-06 09:33:57 +08:00
轮子不错,非常合适
|
7
tikazyq 2020-05-06 14:00:27 +08:00
类似于 fuckdb
|
8
sunshinev OP @ikaros 如果要存储 json 的话,可以通过 iView 将文本框的字段修改为 type=textarea,那么其实 json 会作为字符串存储在 mysql 中的。因为每一个字段实际上都会映射到 golang 的 struct,如果要想在前端直接编辑 json 并且让每个字段都映射到 mysql 的字段的话,目前生成的页面不支持~不过可以稍作修改嘛~ go-sword 的最大的好处就是每个页面可以自定义~
|
9
sunshinev OP @Smash go-sword 是使用 Vue.js + iView4.0 构建的,所以使用的是 iView4.0 的主题~ 前端代码也在项目里打包了,如果需要调整或者更换皮肤可以重新 yarn build~
|
10
sunshinev OP @ArJun go-sword 就是奔着最简单,最轻的目的,如果有代码洁癖,不希望工具过多的干扰你的业务,比如说就是要个页面,登录的逻辑、用户的逻辑、这些都希望自己来实现,那就特别适合 go-sword,而且 go-sword 没有基于任何框架,比如 Gin 、beego 等。如果作为一个轮子也可以 fork 后做自定义,比如生成的代码按照自己的风格来改造~可能会更加强大,提高工作效率啦~
|
11
sunshinev OP @tikazyq 刚看了下 fuckdb,应该是根据数据库的表格来生成 struct 结构体,这个在 go-sword 中使用的是 db2struct 作为解析包的, 并且对 db2struct 的代码做了一些调整,来满足前端的结构体解析的字段类型映射~
fuckdb 是生成 struct 结构体代码 |
12
sunshinev OP @tikazyq 不好意思,刚回了一半就按了回车。。。刚刚说到 db2struct,实际上 go-sword 是根据 mysql 的数据表来生成完整的 CRUD webUI 的管理后台的~
|
13
sunshinev OP 官方文档发布: https://go-sword-doc.osinger.com/
官方 QQ 群发布:690393633 官网支持讨论区: https://sunshinev.github.io/go-sword-home/forum.html 欢迎大家提出意见,多多指点 |