beego簡(jiǎn)介
Beego是一個(gè)快速開(kāi)發(fā)Go應(yīng)用的http框架,可用于快速開(kāi)發(fā)Api、web及后端服務(wù)等各種應(yīng)用,是一個(gè)RESTful框架。
beego的架構(gòu)
Beego由八個(gè)獨(dú)立模塊構(gòu)建,是一個(gè)高度解耦的應(yīng)用,用戶可以不是用beego的http邏輯使用里面的任意模塊。具體架構(gòu)設(shè)計(jì)如下:
beego執(zhí)行邏輯
beego是一個(gè)經(jīng)典的mvc框架,它的執(zhí)行邏輯如下:
與之對(duì)應(yīng)的項(xiàng)目目錄結(jié)構(gòu)如下:
├── conf
│ └── app.conf
├── controllers
│ ├── admin
│ └── default.go
├── main.go
├── models
│ └── models.go
├── static
│ ├── css
│ ├── ico
│ ├── img
│ └── js
└── views
├── admin
└── index.tpl
我們可以看出mian.go是入口文件,controllers是邏輯控制模塊,models是模型模塊,views是視圖模塊。
beego的安裝
beego框架的安裝方法非常簡(jiǎn)單,使用一下指令即可
go get github.com/astaxie/beego
go語(yǔ)言在這一點(diǎn)我認(rèn)為是做的比較好的,直接用指令就能直接下載安裝好。當(dāng)然上述指令需要git支持。用戶同樣可以在github上下載源代碼然后放置到GOPATH下的src/github.com/astaxie/目錄下,然后使用go install
就可直接安裝。
beego還有一個(gè)工具bee用于協(xié)助快速開(kāi)發(fā)beego項(xiàng)目,通過(guò)bee可以很容易的進(jìn)行構(gòu)建、熱編譯、開(kāi)發(fā)、測(cè)試和部署。
bee工具可以使用go指令直接下載安裝:
go get github.com/beego/bee
部分用戶可能在安裝了bee工具后運(yùn)行bee時(shí)會(huì)遇到被系統(tǒng)killed的問(wèn)題,這個(gè)問(wèn)題作者也沒(méi)說(shuō)明具體是什么原因,遇到這種問(wèn)題的用戶可以直接從github.com/beego/bee上clone下載最新源碼到GOPATH\src\github.com\beego\下然后checkout hot-fix-support分支,然后執(zhí)行go install
指令進(jìn)行手動(dòng)安裝即可。
執(zhí)行
bee version
若出現(xiàn)以下信息便說(shuō)明安裝成功且運(yùn)行正常:
$ bee version
______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v1.8.1
├── Beego : Beego is not installed. Please do consider installing it first: https://github.com/astaxie/beego
├── GoVersion : go1.8
├── GOOS : darwin
├── GOARCH : amd64
├── NumCPU : 4
├── GOPATH : /Users/alpher/go
├── GOROOT : /usr/local/Cellar/go/1.8/libexec
├── Compiler : gc
└── Date : Wednesday, 5 Apr 2017
創(chuàng)建beego項(xiàng)目
安裝完以上工具我們就可以直接通過(guò)bee new projectName
來(lái)構(gòu)建一個(gè)beego框架的項(xiàng)目
$ bee new beegoDemo
______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v1.8.1
2017/04/05 10:24:49 INFO ? 0001 Creating application...
create /Users/alpher/go/src/beegoDemo/
create /Users/alpher/go/src/beegoDemo/conf/
create /Users/alpher/go/src/beegoDemo/controllers/
create /Users/alpher/go/src/beegoDemo/models/
create /Users/alpher/go/src/beegoDemo/routers/
create /Users/alpher/go/src/beegoDemo/tests/
create /Users/alpher/go/src/beegoDemo/static/
create /Users/alpher/go/src/beegoDemo/static/js/
create /Users/alpher/go/src/beegoDemo/static/css/
create /Users/alpher/go/src/beegoDemo/static/img/
create /Users/alpher/go/src/beegoDemo/views/
create /Users/alpher/go/src/beegoDemo/conf/app.conf
create /Users/alpher/go/src/beegoDemo/controllers/default.go
create /Users/alpher/go/src/beegoDemo/views/index.tpl
create /Users/alpher/go/src/beegoDemo/routers/router.go
create /Users/alpher/go/src/beegoDemo/tests/default_test.go
create /Users/alpher/go/src/beegoDemo/main.go
2017/04/05 10:24:49 SUCCESS ? 0002 New application successfully created!
項(xiàng)目創(chuàng)建好后,我們需要進(jìn)入到項(xiàng)目中,使用bee run projectName
運(yùn)行新創(chuàng)建的beego項(xiàng)目,使用bee run
命令的目的是達(dá)到熱編譯的效果,能實(shí)時(shí)查看到我們修改的內(nèi)容效果。
$ bee run beegoDemo
______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v1.8.1
2017/04/05 10:29:29 INFO ? 0001 Using 'beegoDemo' as 'appname'
2017/04/05 10:29:29 INFO ? 0002 Initializing watcher...
beegoDemo/controllers
beegoDemo/routers
beegoDemo
2017/04/05 10:29:31 SUCCESS ? 0003 Built Successfully!
2017/04/05 10:29:31 INFO ? 0004 Restarting 'beegoDemo'...
2017/04/05 10:29:31 SUCCESS ? 0005 './beegoDemo' is running...
2017/04/05 10:29:31 [I] [asm_amd64.s:2197] http server Running on http://:8080
這樣我們的應(yīng)用就已經(jīng)在8080端口運(yùn)行了,訪問(wèn)localhost:8080就可以看到如下效果了: