Beego項目框架

鑑於有學習go語言的必要(其實就是項目需要),故跟着Golang tutorial series文檔過了一遍基本語法,當然是不熟悉,然後做了個demo Repository (https://github.com/HelloMrShu/go_bp),最後把一個需要界面的工具重寫了一下,在此記錄一下,共耗時兩週

鑑於是公司項目,故只說核心內容,有問題私信溝通即可

1 架構和流程
在這裏插入圖片描述
在這裏插入圖片描述
2 目錄結構
基本目錄結構是通過bee工具生成的,這裏就加了個utils目錄,作爲常用工具目錄
directory
作者應該是借鑑了php相關框架目錄思想,即基本的MVC分層思路,配置、控制器、模型、路由、靜態文件、測試、視圖,以及入口文件main.go

3 運行
這裏藉助bee工具,bee run 啓動項目(至於怎麼安裝,請自行搜索,如果被牆,就下載包,本地安裝即可)
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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章