鑑於有學習go語言的必要(其實就是項目需要),故跟着Golang tutorial series文檔過了一遍基本語法,當然是不熟悉,然後做了個demo Repository (https://github.com/HelloMrShu/go_bp),最後把一個需要界面的工具重寫了一下,在此記錄一下,共耗時兩週
鑑於是公司項目,故只說核心內容,有問題私信溝通即可
1 架構和流程
2 目錄結構
基本目錄結構是通過bee工具生成的,這裏就加了個utils目錄,作爲常用工具目錄
作者應該是借鑑了php相關框架目錄思想,即基本的MVC分層思路,配置、控制器、模型、路由、靜態文件、測試、視圖,以及入口文件main.go
3 運行
這裏藉助bee工具,bee run 啓動項目(至於怎麼安裝,請自行搜索,如果被牆,就下載包,本地安裝即可)
4 路由
內容在routers文件裏
package routers
import (
"template/controllers"
"github.com/astaxie/beego"
)
func init() {
beego.Router("/", &controllers.MainController{})
beego.Router("/ae/test", &controllers.RuleController{}, "get:AeTest")
}
第一個默認路由
第二個表示請求localhost:8082/ae/test,訪問路徑是去controller裏的RuleController尋找AeTest方法,如下:
func (c *RuleController) AeTest() {
...
c.Layout = "components/layout.tpl" //指定layout文件
//渲染分頁數據到模板,默認模板路徑是views/rulecontroller/aetest.tpl
//類似框架通常的路徑應該爲views/rule/aetest.tpl
//這裏的分頁插件是根據業務自己寫的
c.Data["paginator"] = utils.Set(page, page_size, total)
}
5 模型定義
beego的表定義是struct,beego的orm插件有和mysql類型對應的定義,但好像不全,注意,beego在找表的時候,是遵循駝峯命名的,下面表名爲 ex_template,切記
type ExTemplate struct {
Id int32 `orm:"pk"`
Platform string
Bidmode string
Name string
Media string
Special_type string
Content string
Is_delete int8
}
6 註冊數據庫和模型
務必註冊一個alias爲default的數據庫
model1.go
func init() {
orm.RegisterDataBase("default", "mysql", "root:root@tcp(127.0.0.1:3306)/test?charset=utf8", 30)
//註冊模型
orm.RegisterModel(new(ExTemplate))
}
model2.go
func init() {
//再註冊一個db
orm.RegisterDataBase("test1", "mysql", "root:root@tcp(127.0.0.1:3306)/test1?charset=utf8", 30)
}
註冊多個db,就涉及到切換的問題,切記
//如果查詢的是default的表
o := orm.NewOrm()
qs := o.QueryTable("ex_template_test")
//如果需要切換db
o := orm.NewOrm()
o.Using("test1")
qs := o.QueryTable("ex_template_test")
7 靜態文件
自定義的靜態文件比較簡單,如果你定義了自己的css,js等,如下引入即可
<script src="/static/js/exrule.js"></script>
這就是簡單的入門內容,高級功能請自行學習
參考文檔
1 go手冊,https://golangbot.com/learn-golang-series/
2 beego文檔,https://beego.me/docs/intro/