Go-sword (利刃 ?️) 是一款基於 Go 語言的視覺化 Web 管理後臺生成工具

sunshinev發表於2020-04-27

Github地址:github.com/sunshinev/go-sword

一款基於Go語言的視覺化web管理後臺生成工具
目標就是快速的建立CRUD視覺化的後臺
根據MySQL的表結構,建立完整的管理後臺介面,開發者無需再重複手動的建立具有CRUD能力的頁面
只需要點選按鈕即可生成完整的管理後臺

136e8b44d5d4acf00d5a63125928bd731587996269.jpg

特點

  1. 一鍵生成,無需寫一行程式碼
  2. 支援增加、刪除、編輯、列表、批量刪除、分頁、檢索
  3. 頁面基於Vue.js + iView
  4. 針對每個資料表都生成了單獨的邏輯檔案,開發者可以求使用Vue或者iView來實現功能更加豐富的頁面

1626ee1d3300ac6db6669d63721d96381587996351.jpg

開始

安裝

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

安裝完成後,確保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

-module 引數是代表要建立的專案名稱,同時也是新專案go.mod檔案中的module欄位的值,這點請務必保持一致。

注意

新專案會在執行go-sword命令的當前目錄下,直接建立module目錄,作為新專案

開始使用服務

Start successful, server is running ...
Please request: http://localhost:8080

根據服務啟動的提示,直接點選http://localhost:8080即可進入web的視覺化工具頁面

59384a43cbc382dec53dd76d169a5d001587995174.jpg

重要:頁面功能介紹
  1. 首先下拉選擇MySQL 的表格,然後點選Preview按鈕,即可渲染出需要建立的檔案
  2. 首次建立新專案檔案需要點選select all全部選擇,首次建立包含了專案啟動必需的核心檔案
  3. 點選Generate按鈕,既可以看到提示檔案建立成功
  4. 到目前為止,我們的後臺已經建立成功了

注意:

  1. 首次建立,檔案需要全部選擇
  2. 如果建立第二個管理頁面,那麼可以只選擇 select diff & new按鈕,然後點選Generate按鈕
  3. 每次生成新的管理介面後,請重啟新建立的專案

開始使用新專案

進入到我們新建立的專案目錄

➜  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 init

利用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

管理後臺效果

  1. 後端報錯提醒
  2. 增加、刪除、編輯、列表、批量刪除、分頁、檢索

1626ee1d3300ac6db6669d63721d96381587996351.jpg

一些問題

  1. 因為golang的map結構遍歷亂序的問題,部分頁面輸出的欄位順序不能保證和資料庫欄位順序一致
  2. 關於module的引數,可能還會有更好的解決方案
  3. 沒有提供使用者註冊、登入的能力,這也不符合初衷,最開始就是想做的更加基礎,快速建立頁面
  4. 生成的專案程式碼,還有很大的優化空間

頁面功能展示

列表

ea1f86ebc1b5c88aaf6484fa078584951587997286.jpg

刪除

70279af696d9a230001f821cdf3a1ac21587997368.jpg

預覽

2d1871a645acc3d3544ad7f77a0d6fca1587997398.jpg

編輯

a9255db26b2af0365655840f6afd27851587997440.jpg

Go-sword fork

如果想要自定義的話,那麼需要注意,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/...
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章