SQL+RESTful開源GO腳手架工具ginbro(gin and gorm's brother) 詳解
安裝felix
git clone https://github.com/dejavuzhou/felix
cd felix
go mod download
go install
echo "新增 GOBIN 到 PATH環境變數"
echo "或者"
go get github.com/dejavuzhou/felix
echo "go build && ./felix -h"
What is Ginbro
- Gin腳手架工具:因為工作中非常多次的使用mysql資料庫 + gin + GORM 來開發RESTful API程式,所以後開發一個Go語言的RESTful APIs的腳手架工具
- Ginbro程式碼來源:Ginrbo的程式碼迭代自github.com/dejavuzhou/ginbro
- SPA二進位制化工具:vuejs全家桶程式碼二進位制化成go程式碼,編譯的時候變成二進位制,執行的時候直接載入到記憶體中,同時和gin API在一個域名下不需要再nginx中配置rewrite或者跨域,加快API訪問速度
功能一:Gin+GORM_SQL RESTful 腳手架工具
工作原理
- 通過cobra 獲取命令列引數
- 使用sql引數連線資料庫
- 後去資料庫表的名稱和欄位型別等資料庫
- 資料庫邊的表名和欄位資訊,轉換成 Swagger doc 規範欄位 和 GORM 模型欄位
- 使用標準庫
text/template
生成swagger.yaml, GORM 模型檔案, GIN handler 檔案 ... - 使用
go fmt ./...
格式化程式碼 - 使用標準庫
archive/zip
打包*.go config.toml ...
程式碼,提供zip檔案下載(命令列模式沒有)
支援資料庫大多數SQL資料庫
- mysql
- SQLite
- postgreSQL
- mssql(TODO:: sqlserver)
ginbro 生成app程式碼包含功能簡介
- 每一張資料庫表生成一個RESTful規範的資源(
GET<pagination>/POST/GET<one>/PATCH/DELETE
) - 支援API-json資料分頁-和總數分頁快取,減少全表掃描
- 支援golang-記憶體單機快取快取
- 前端程式碼和API公用一個服務,減少跨域OPTION的請求時間和配置時間,同時完美支援前後端分離
- 開箱支援jwt-token認證和Bearer Token 路由中介軟體
- 開箱即用的logrus資料庫
- 開箱即用的viper配置檔案
- 開箱即用的swagger API 文件
- 開箱即用的定時任務系統
專案演示地址
felix sshw 網頁UI演示地址 使用者名稱和密碼都是admin
生成swagger API互動文件地址 http://ginbro.mojotv.cn/swagger/
msql生成go程式碼地址
bili命令列演示視訊地址
命令列引數詳解
[root@ericzhou felix]# felix ginbro -h
generate a RESTful APIs app with gin and gorm for gophers
Usage:
felix ginbro [flags]
示例:
felix ginbro -a dev.wordpress.com:3306 -P go_package_name -n db_name -u db_username -p 'my_db_password' -d '~/thisDir'
Flags:
--authColumn string 使用bcrypt方式加密的使用者表密碼欄位名稱 (default "password")
--authTable string 認知登陸使用者表名稱 (default "users")
-a, --dbAddr string 資料庫連線的地址 (default "127.0.0.1:3306")
-c, --dbChar string 資料庫字符集 (default "utf8")
-n, --dbName string 資料庫名稱
-p, --dbPassword string 資料庫密碼 (default "password")
-t, --dbType string 資料庫型別: mysql/postgres/mssql/sqlite (default "mysql")
-u, --dbUser string 資料庫使用者名稱 (default "root")
-d, --dir string golang程式碼輸出的目錄,預設是當前目錄 (default ".")
-h, --help 幫助
-l, --listen string 生成go app 介面監聽的地址 (default "127.0.0.1:5555")
--pkg string 生成go app 包名稱(go version > 1.12) 生成go.mod檔案, eg: ginbroSon
[root@ericzhou felix]#
web介面
對於那些喜歡使用命令列的同學,你們可以選擇使用web介面來操作
git clone https://github.com/dejavuzhou/felix
cd felix
go mod download
go install
echo "新增 GOBIN 到 PATH環境變數"
echo "go build && ./felix -h"
echo 開啟Web介面
felix sshw -h
felix sshw
echo "三秒鐘之後會自動幫助你開啟瀏覽器,如果如果你使用的windows或者mac系統"
1.登陸介面
預設使用者名稱和密碼都是 admin
2.填寫資料庫連線資訊
3.配置app使用者認證的表和欄位
4.配置app 包名稱,匯出目錄和監聽地址
5.生成go程式碼
6.下載程式碼或cd者到指定目錄
功能二:前端程式碼二進化,通過gin中介軟體整合到API服務
工作原理
- 遍歷編譯好的前端程式碼目錄
- 使用
archive/zip
寫入到bytes.buffer
中 - 格式化輸出層 字串常量的 go檔案中
- 建立gin中介軟體,載入字串處理,解析出檔案
- 中介軟體path如果命中檔案,這http 輸出檔案,否在交給下一個handler
引數說明
$ felix ginbin -h
示例: felix ginbin -s dist -p staticbin
Usage:
felix ginbin [flags]
Flags:
-c, --comment string 程式碼註釋說明.
-d, --dest string 出輸go程式碼到目錄. (default ".")
-f, --force 是否覆蓋輸出. (default true)
-h, --help 幫助
-m, --mtime 是否修改檔案時間戳.
-p, --package string 輸出的包名稱. (default "felixbin")
-s, --src string 前端靜態檔案的目錄地址. (default "dist")
-t, --tags string go 語言的標籤.
-z, --zip 是否zip壓縮.
使用說明:生成的二進位制化go檔案
vuejs/dist 使用 felix ginbin
生成的go檔案
https://github.com/dejavuzhou/felix/blob/master/staticbin/gin_static.go
gin 路由應用二進位制化的前端程式碼中介軟體如下:
import "github.com/dejavuzhou/felix/staticbin" //匯入felix ginbin 生成的二進位制化包
https://github.com/dejavuzhou/felix/blob/master/ssh2ws/ssh2ws.go
r := gin.Default()
r.MaxMultipartMemory = 32 << 20
//sever static file in http's root path
binStaticMiddleware, err := staticbin.NewGinStaticBinMiddleware("/")
if err != nil {
return err
}
r.Use(binStaticMiddleware)
引用和程式碼倉庫
dejavuzhou/felix Golang 工具集
felix ginbro 命令邏輯程式碼目錄
前端程式碼二進位制化成gin中介軟體程式碼
文章來源 MojoTech
相關文章
- vue-cli 腳手架詳解Vue
- vue腳手架工具Vue
- plop小型腳手架工具
- 如何自己開發一個腳手架工具
- 小型前端腳手架工具Plop前端
- 用vue快速開發app的腳手架工具VueAPP
- go web開發(gin&gorm) 之DB配置及DAO的基本使用GoWebORM
- 如何使用go-gin-gorm-jwt-vue基於gin實現一種MVC開發模式的架構,實現中小型專案的API構架GoORMJWTVueMVC模式架構API
- 使用 Node.js 開發簡單的腳手架工具Node.js
- 全新打包工具parcel零配置vue開發腳手架Vue
- 從零開始學golang之gin加上gormGolangORM
- 開源了一個小的前端腳手架(隊內分享)前端
- node環境搭建和vue-cli腳手架使用詳解Vue
- vue腳手架Vue
- 腳手架的開發總結
- 從零開始搭建腳手架
- 基於node.js的腳手架工具開發經歷Node.js
- 教你從零開始搭建一款前端腳手架工具前端
- go系列之一:gin+gorm開發一個簡單的熱榜介面站GoORM
- 結合 gin+gorm+go-Redis 寫一個基礎 API(上篇)GoORMRedisAPI
- 結合 gin+gorm+go-Redis 寫一個基礎 API(中篇)GoORMRedisAPI
- 結合 gin+gorm+go-Redis 寫一個基礎 API(下篇)GoORMRedisAPI
- vue-cli腳手架中webpack配置基礎檔案詳解VueWeb
- Gin + GORM 入門到實戰GoORM
- 如何開發自己的 yeoman 腳手架
- 如何開發一個Node腳手架
- 從零開始製作cli工具,快速建立專案腳手架
- vue - Vue腳手架Vue
- 淺談前端常用腳手架cli工具及案例前端
- 利用 lenosp 腳手架搭建測試工具平臺
- [開源]Gin + GORM + Casbin+vue-element-admin 實現許可權管理系統GoORMVue
- [開源] Gin + GORM + Casbin+vue-element-admin 實現許可權管理系統GoORMVue
- 前後端分離開發腳手架後端
- 寫一個屬於你的前端腳手架工具前端
- vue腳手架基礎Vue
- Go微服務架構系列--gin框架(上)Go微服務架構框架
- 基於Gin+Gorm框架搭建MVC模式的Go語言後端系統GoORM框架MVC模式後端
- 使用 gin + gorm + seesion 完成 Laravel 的 make:authGoORMLaravel