Beego(簡介、配置、路由、日誌)

weixin_34037977發表於2018-11-24

參考資料

官方文件
https://beego.me/docs/intro/

官方Samples

Beego的簡介

中國人自己開發的Go應用框架,支援八大低耦合獨立的模組,同時支援bee小工具,快速開發Go的應用程式,另外還自帶了監控模組,類似於SpringBoot的 Actutar的功能
優點是大而全,缺點是過於臃腫了,在某些模組,比如mvc模組、orm模組,不如一些小而專的框架(Gin)

  1. Orm框架
  2. MVC路由
  3. 日誌模組
  4. 快取模組
  5. 配置檔案
  6. session管理
  7. RestFul

配置檔案的使用

bee工具生成的beego專案,會在conf路徑下有app.conf檔案,直接配置,然後就可以使用了。
包括了很多核心功能的配置:靜態資源路徑、埠、session、日誌配置、Web配置、App配置等等

  1. 配置常用的引數
  • httpport
  1. 專案不同型別的資料的配置和讀取(字串、數字)
mysqluser = "root"
numb = 1000

beego.AppConfig.String("mysqluser")
num,err :=beego.AppConfig.Int64("numb")
  1. 可以通過在app.conf裡面include其它配置檔案來實現不同功能的配置檔案分開配置,比如database.conf檔案

  2. 支援類似於pom.xml的runmode配置,從而減少不同環境的配置修改的數量

runmode ="dev"

[dev]
httpport = 8080
[prod]
httpport = 8088
[test]
httpport = 8888
  1. 支援配置beego.BConfig.RouterCaseSensitive(預設true)屬性,來開啟路由字母大小寫的問題

  2. AutoRender 屬性預設是開啟的,對於API型別的專案,應該手動關閉模板渲染功能

beego.BConfig.WebConfig.AutoRender = true
  1. 路由相關的配置 ViewsPath、TemplateLeft、TemplateRight、StaticDir
StaticDir="static" 靜態檔案css、js、圖片的路徑

TemplateLeft 模板左標籤,預設值是{{。
TemplateLeft="{{"

TemplateRight 模板右標籤,預設值是}}。
TemplateRight="}}"

ViewsPath 模板路徑,預設值是 views。
ViewsPath="views"
  1. 監控配置,8088埠,預設關閉,可以通過這個埠查詢到 QPS、CPU、記憶體、GC、goroutine、thread 等統計資訊。
EnableAdmin = false
AdminAddr = "localhost"
AdminPort = 8088 


Beego 路由功能

特性:

  1. 模板檔案因為是預編譯的,所以預設模板檔案是無法熱載入的,和普通模式下的載入方式不同,但是提升了模板渲染的速度
  2. 模板檔案:預設支援 tpl 和 html 的字尾名

使用方式:

  1. 在 controllers裡面根據業務配置相應的方法,通過成員變數的方式,間接的繼承beego.Controller,並擁有了一些列常用的方法 Get() Post()等等
type MainController struct {
    beego.Controller
}

func (c *MainController) Test() {
    c.Data["Website"] = "QQQ"
    c.Data["Email"] = "QQQ"
    c.TplName = "index.tpl"
}
  1. 在 routers/router.go 裡面配置路由規則
func init() {
    beego.Router("/", &controllers.MainController{})
    beego.Router("/test", &controllers.MainController{},"get:Test")
}
  1. 在main包裡面,啟動初始化的方式 引用到router包,並且啟動beego
import (
    _ "firstproject/routers"
    "github.com/astaxie/beego"
)
func main() {
    beego.Run()
}

註解式路由的使用

beego會自動進行原始碼分析,但是隻會在dev模式下生成,生成的路由放在/routers/commentsRouter_controllers.go

  1. routers.go檔案裡面,直接通過.Include的方式引入MainController
beego.Include(&controllers.MainController{})
  1. Controller檔案裡面,通過 // @router註解 實現對映
// @router / [get]
func (this *MainController) Index() {
    this.TplName = "templates/index.html"
}
  1. runmode 必須是 dev環境才行
runmode = dev

直接返回資料

 this.Ctx.WriteString("hello 1111")


Beego日誌功能

https://beego.me/docs/module/logs.md

依賴類庫"github.com/astaxie/beego/logs"

  1. Console日誌輸出
    logs.Debug("my book is bought in the year of ", 2016)
    logs.Info("this %s cat is %v years old", "yellow", 3)
    logs.Warn("json is a type of kv like", map[string]int{"key": 2016})
    logs.Error(1024, "is a very", "good game")
    logs.Critical("oh,crash")
  1. 可以通過設定從而輸出到日誌檔案當中,因為預設用的是全域性的logs,所以可以在main裡面執行,就輸出到對應的目錄下面
//同時輸出到console和file
beego.SetLogger("file", `{"filename":"logs/test.log"}`)
//通過配置這個,可以只輸出到file當中
beego.BeeLogger.DelLogger("console")
  1. 預設級別 :LevelEmergency、LevelAlert、LevelCritical、LevelError、LevelWarning、LevelNotice、LevelInformational、LevelDebug
beego.SetLevel(beego.LevelInformational)
  1. logs.Async() 提升效能

Bee工具的安裝和使用

https://beego.me/docs/install/bee.md

常用命令

  1. bee new testproject:建立標準格式的go web專案
  2. bee api testApiProject: 建立一個API介面類的Go專案

安裝

  1. go get github.com/beego/bee
  2. 設定GOBIN 環境變數

相關文章