V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sunshinev
V2EX  ›  程序员

Go-sword 一键生成 CRUD 可视化 web 后台 V2.0.0 升级发布

  •  
  •   sunshinev ·
    sunshinev · 99 天前 · 1441 次点击
    这是一个创建于 99 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Go-sword(利刃) V2.0.0

    GitHub last commit GitHub GitHub repo size GitHub stars GitHub forks

    一款基于 Go 语言的可视化 web 管理后台生成工具包 根据 MySQL 的表结构,创建 CRUD 的管理后台界面,开发者无需再重复手动的创建具有 CRUD 能力的页面,只需要点击按钮即可生成完整的管理后台

    官网 https://sunshinev.github.io/go-sword-home/

    官方文档更新可能不及时,请以 GIT README.md 为准

    升级说明

    v2.0.0

    1. 修改为以包引入的方式来启动工具+创建后端
    2. 修改了 stub 的业务逻辑代码
    3. 将所有的代码在生成前,使用 gofmt 进行格式化
    4. 缺点,需要重启项目后端项目才能生效

    v1.0.0

    1. 单独的服务启动项目

    Gosword 会在项目指定目录,释放一个完整的后台代码,包括前端、后端

    重要

    1. 用来生成后端页面的数据表,要有 id,created_at,updated_at 三个必备字段

    安装

    go get -u  github.com/sunshinev/go-sword
    

    配置文件说明

    项目需要一个配置文件,采用 yaml 格式,除了数据库的配置,主要包括释放的目录、工具端口、后台端口

    db:
      user: root
      password: '123456'
      database: test
      host: localhost
      port: 3306
    root_path: admin22 # 后端项目释放的目录
    tool_port: '8081'  # go-sword 代码生成工具的端口
    server_port: '8082' # 生成的后台项目的端口
    

    GIN 框架中的应用

    1. 在 Gin 项目中的 main 函数中,开启工具,import 代码包
    package main
    
    import (
    	"log"
    
    	"github.com/app/admin22/sword"
    	"github.com/gin-gonic/gin"
    	gosword "github.com/sunshinev/go-sword"
    )
    
    func main() {
    
    	r := gin.Default()
    	r.GET("/ping", func(c *gin.Context) {
    		c.JSON(200, gin.H{
    			"message": "pong",
    		})
    	})
    	// 日志
    	log.SetFlags(log.Llongfile | log.Ldate)
    
    	// 1. 开启工具->根据 sql 生成项目
    	gosword.Init("config/go-sword.yaml").Run()
    
    	// 原始 gin 项目
    	_ = r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
    }
    

    使用gosword.Init加载配置文件,并且在项目中开启工具

    gosword.Init("config/go-sword.yaml").Run()
    
    1. 后台创建成功后,加入sword.Run,使用另外一个端口开启后端项目
    func main() {
    
    	r := gin.Default()
    	r.GET("/ping", func(c *gin.Context) {
    		c.JSON(200, gin.H{
    			"message": "pong",
    		})
    	})
    	// 日志
    	log.SetFlags(log.Llongfile | log.Ldate)
    
    	// 1. 开启工具->根据 sql 生成项目
    	gosword.Init("config/go-sword.yaml").Run()
    
    	// 2. 加载生成的项目->重新启动
    	sword.Run("config/go-sword.yaml")
    
    	// 原始 gin 项目
    	_ = r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
    }
    
    
    9 条回复    2021-07-21 15:58:35 +08:00
    duuu
        1
    duuu   99 天前
    demo 挂了
    efaun
        2
    efaun   99 天前   ❤️ 1
    纯英文页面下面放个 QQ 群好违和,至少弄个 Twitter 吧,下面三个超链居然还是假的
    ca1123
        3
    ca1123   99 天前
    @efaun 我觉得 QQ 挺好的(*/ω\*)
    ca1123
        4
    ca1123   99 天前
    对了, 其它 SQL 数据库呢, 可以搞么?
    ca1123
        5
    ca1123   99 天前
    还有, 你这东西就是相当于一个 web 的 dbvisualizer 么?
    kwanzaa
        6
    kwanzaa   99 天前
    demo 502
    cedoo22
        7
    cedoo22   99 天前
    就文档来说,感觉版本不像 2.0, 像是 0.2
    airplayxcom
        8
    airplayxcom   99 天前
    40MB ?
    sunshinev
        9
    sunshinev   98 天前
    作者想说的话
    Go-sword 其实提供了一种模式,这种模式借鉴于 Yii 框架的 GII 工具。在 GII 模式的基础上,与 VUE+iview2.0 进行融合,进而产出了 Go-sword 项目。
    Go-sword 内部的代码包括前端、后端并非最优解,正如前面所说的,它本身提供了一种快速便捷的开发方式,如果开发者觉得这种模式有利于项目效率,可以 Fork 该项目,修改 stub 文件来满足自己的项目架构

    回复几个问题:
    1. 『还有, 你这东西就是相当于一个 web 的 dbvisualizer 么?』
    他本身提供了快速创建 CRUD 的能力,因为 CURD 是大部分后台所常用的功能。
    我们在使用的时候,需要进行思维发散,也就是说页面生成了,但是接口是可以写自定义业务逻辑的,也就是说相同的 LIST 列表接口,我可以读取其他依赖服务,或者组合其他数据,输出到列表页进行展示。

    而数据的展示方式也不止 LIST 列表这一种模式,前端页面使用 iview 框架,所以 iview 的组件都可以移植到页面中使用


    2. DEMO 挂了
    已经重新上线了

    3. 『纯英文页面下面放个 QQ 群好违和,至少弄个 Twitter 吧,下面三个超链居然还是假的』
    有空多学习,少扯皮
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3874 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 07:00 · PVG 15:00 · LAX 00:00 · JFK 03:00
    ♥ Do have faith in what you're doing.