Mix Go 是什么
Mix Go 是混合型高性能 Go 框架壶冒,該框架改造整合了 gin
, logrus
, gorm
, go-redis
, jwt-go
, gorilla
... 等多個(gè)流行組件,可以開發(fā) console
, api
, web
, grpc
等各種項(xiàng)目烟零,并且引入了依賴注入咸作、控制反轉(zhuǎn)、事件驅(qū)動等高級特征墅诡,框架追求簡單實(shí)用主義桐智,試圖讓更多開發(fā)者以更低的學(xué)習(xí)成本獲得極具生產(chǎn)力的第二編程語言。
與其他 Go 框架的差別
骨架代碼全部基于 bean, event 依賴注入荐吉、控制反轉(zhuǎn)、事件驅(qū)動庫構(gòu)建穿撮,同時(shí)內(nèi)置了 Go 生態(tài)各個(gè)領(lǐng)域最流行的庫痪欲,包括 gin, gorm, logrus 等业踢,并且這些離散的庫已經(jīng)被整合為一體礁扮,可以相互關(guān)聯(lián)使用。
骨架內(nèi)置了 gin 作為服務(wù)器雇锡,gin 嚴(yán)格來講并不是框架僚焦,而是一個(gè) server 庫,只提供了服務(wù)器相關(guān)的功能立肘,請求處理名扛,中間件肮韧,視圖渲染等。
與 beego 等其他 go 框架不同的是惹苗,mix-go 的依賴庫全部是獨(dú)立倉庫桩蓉,當(dāng)你只想使用某一個(gè)庫時(shí),可以直接使用語義化版本號洽瞬,而不是 commitid 版本號业汰。
提供了 console, api, web, grpc 多種骨架生成工具,同時(shí)骨架代碼中包含非常豐富的范例为障,開箱即用。
采用高度靈活的開發(fā)方式,框架只提供底層庫鳍怨,而與具體功能相關(guān)的代碼都在骨架代碼中實(shí)現(xiàn)呻右,用戶能更加細(xì)粒度的修改每一處細(xì)節(jié)。
框架非常輕量靈活鞋喇,依賴庫均可獨(dú)立使用声滥,嚴(yán)格來講除了 console 命令行開發(fā)組件,其他全部為選裝侦香。
由于骨架和核心類庫都由 Mix 自己打造落塑,擁有和 MixPHP 同樣的設(shè)計(jì)哲學(xué),PHP 的用戶可以很容易上手開發(fā)罐韩。
與 Mix PHP 的關(guān)系
該框架與 MixPHP 設(shè)計(jì)哲學(xué)幾乎完全一致芜赌,PHP 的用戶可以非常容易的切換到 MixGo 進(jìn)行開發(fā)伴逸,達(dá)到學(xué)一會二的效果缠沈,OpenMix 可能是現(xiàn)在唯一一個(gè)打造跨語言框架的開源機(jī)構(gòu)。
微服務(wù)
由于 gin 與 go-micro 是兼容的错蝴,因此可以非常方便的擴(kuò)展為微服務(wù)洲愤。
框架定位
當(dāng)我們開發(fā) MixPHP 時(shí)發(fā)現(xiàn)框架的設(shè)計(jì)哲學(xué)可以復(fù)制到 Go 生態(tài),于是我們著手實(shí)現(xiàn)讓更多的 PHP 中級程序員也可使用 Go 打造高并發(fā)系統(tǒng)顷锰,讓 Mix 的用戶能學(xué)一會二柬赐,實(shí)現(xiàn)跨語言無差別開發(fā)。
開發(fā)文檔
技術(shù)交流
知乎:https://www.zhihu.com/people/onanying
微博:http://weibo.com/onanying
官方QQ群:284806582, 825122875官紫,敲門暗號:goer
快速開始
- 安裝開發(fā)工具
go get -u github.com/mix-go/mix
- 創(chuàng)建
api
應(yīng)用骨架
mix api --name=hello
- 編譯到骨架的
bin
目錄
cd hello
go build -o bin/go_build_main_go main.go
- 執(zhí)行
cd bin
./go_build_main_go
- 啟動
api
$> ./go_build_main_go api
___
______ ___ _ /__ ___ _____ ______
/ __ `__ \/ /\ \/ /__ __ `/ __ \
/ / / / / / / /\ \/ _ /_/ // /_/ /
/_/ /_/ /_/_/ /_/\_\ \__, / \____/
/____/
Server Name: mix-api
System Name: darwin
Go Version: 1.13.4
Framework Version: 1.0.5
Listen Addr: :8080
time=2020-08-28 18:54:31 level=info msg=Server start file=api.go:58
訪問測試 (新開一個(gè)終端):
$> curl http://127.0.0.1:8080/hello
{"message":"hello, world!","status":200}
開發(fā)工具
源碼倉庫中不僅包含全部組件的源碼肛宋,還包含一個(gè)開發(fā)工具:
- 可以生成
console
,api
,web
,grpc
等骨架代碼 - 熱更新工具 (開發(fā)中)
Installation
- 安裝
go get -u github.com/mix-go/mix
Help
查看命令幫助
$ mix
Usage: mix [OPTIONS] COMMAND [opt...]
Commands:
version Prints the current Mix Go version
new Create a console application
api Create a api application
web Create a web application
grpc Create a gRPC application
Global Options:
-h, --help Print usage
-v, --version Print version information
Run 'mix COMMAND --help' for more information on a command.
Developed with Mix Go framework. (openmix.org/mix-go)
New application
創(chuàng)建應(yīng)用骨架
- console
mix new --name=hello
- api
mix api --name=hello
- web (含websocket)
mix web --name=hello
- grpc
mix grpc --name=hello
License
Apache License Version 2.0, http://www.apache.org/licenses/