久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

go語(yǔ)言的beego是什么

beego是一個(gè)使用Go語(yǔ)言開(kāi)發(fā)的應(yīng)用Web框架,目的是為大家提供一個(gè)高效率的Web應(yīng)用開(kāi)發(fā)框架,該框架采用模塊封裝。beego可以用來(lái)快速開(kāi)發(fā)API、Web、后端服務(wù)等各種應(yīng)用,是一個(gè)RESTFul的框架,主要設(shè)計(jì)靈感來(lái)源于tornado、sinatra、flask這三個(gè)框架,但是結(jié)合了Go本身的一些特性(interface、struct繼承等)而設(shè)計(jì)的一個(gè)框架。

go語(yǔ)言的beego是什么

本教程操作環(huán)境:windows7系統(tǒng)、GO 1.18版本、Dell G3電腦。

1. Beego簡(jiǎn)介

1.1 beego是什么

Beego是一個(gè)使用Go語(yǔ)言開(kāi)發(fā)的應(yīng)用Web框架,框架開(kāi)始于2012年,目的是為大家提供一個(gè)高效率的Web應(yīng)用開(kāi)發(fā)框架,該框架采用模塊封裝,使用簡(jiǎn)單,容易學(xué)習(xí)。對(duì)程序員來(lái)說(shuō),beego掌握起來(lái)非常簡(jiǎn)單,只需要關(guān)注業(yè)務(wù)邏輯實(shí)現(xiàn)即可,框架自動(dòng)為項(xiàng)目需求提供不同的模塊功能。

beego可以用來(lái)快速開(kāi)發(fā)API、Web、后端服務(wù)等各種應(yīng)用,是一個(gè)RESTFul的框架,主要設(shè)計(jì)靈感來(lái)源于tornado、sinatra、flask這三個(gè)框架,但是結(jié)合了Go本身的一些特性(interface、struct繼承等)而設(shè)計(jì)的一個(gè)框架。

特性

  • 簡(jiǎn)單化:支持RESTful風(fēng)格、MVC模型;可以使用bee工具類提高開(kāi)發(fā)效率,比如監(jiān)控代碼修改進(jìn)行熱編譯,自動(dòng)化測(cè)試代碼以及自動(dòng)化打包部署等豐富的開(kāi)發(fā)調(diào)試功能。
  • 智能化:beego框架封裝了路由模塊、支持智能路由、智能監(jiān)控,并可以監(jiān)控內(nèi)存消耗,CPU使用以及goroutine的運(yùn)行狀況,方便開(kāi)發(fā)者對(duì)線上應(yīng)用進(jìn)行監(jiān)控分析。
  • 模塊化:beego根據(jù)功能對(duì)代碼進(jìn)行了解耦封裝,形成了Session、Cache、Log、配置解析、性能監(jiān)控、上下文操作、ORM等獨(dú)立的模塊,方便開(kāi)發(fā)者進(jìn)行使用
  • 高性能:beego采用Go原生的http請(qǐng)求,goroutine的并發(fā)效率應(yīng)付大流量的Web應(yīng)用和API引用。

1.2 命令行工具Bee

bee

bee是一個(gè)開(kāi)發(fā)工具,協(xié)助Beego框架開(kāi)發(fā)項(xiàng)目是進(jìn)行創(chuàng)建項(xiàng)目、運(yùn)行項(xiàng)目、熱部署等相關(guān)的項(xiàng)目管理的工具,beego是源碼負(fù)責(zé)開(kāi)發(fā)、bee是工具負(fù)責(zé)構(gòu)建和管理項(xiàng)目。

USAGE     bee command [arguments]  AVAILABLE COMMANDS      version     Prints the current Bee version // 打印當(dāng)前bee版本     migrate     Runs database migrations	// 運(yùn)行數(shù)據(jù)庫(kù)的     api         Creates a Beego API application // 構(gòu)建一個(gè)beego的API應(yīng)用     bale        Transforms non-Go files to Go source files// 轉(zhuǎn)義非go的文件到go的src中區(qū)     fix         Fixes your application by making it compatible with newer versions of Beego // 通過(guò)使得新版本的beego兼容來(lái)修復(fù)應(yīng)用     pro         Source code generator// 源代碼生成器     dev         Commands which used to help to develop beego and bee// 輔助開(kāi)發(fā)beego和bee的     dlv         Start a debugging session using Delve// 使用delve進(jìn)行debbugging     dockerize   Generates a Dockerfile for your Beego application // 為beego應(yīng)用生成dockfile     generate    Source code generator// 源代碼生成器     hprose      Creates an RPC application based on Hprose and Beego frameworks     new         Creates a Beego application// 創(chuàng)建beego應(yīng)用     pack        Compresses a Beego application into a single file // 壓縮beego項(xiàng)目文件     rs          Run customized scripts// 運(yùn)行自定義腳本     run         Run the application by starting a local development server // 通過(guò)啟動(dòng)本地開(kāi)發(fā)服務(wù)器運(yùn)行應(yīng)用     server      serving static content over HTTP on port// 通過(guò)HTTP在端口上提供靜態(tài)內(nèi)容     update      Update Bee// 更新bee
登錄后復(fù)制

// 創(chuàng)建一個(gè)beego項(xiàng)目 bee new FirstBeego // 運(yùn)行beego項(xiàng)目 bee run
登錄后復(fù)制

go語(yǔ)言的beego是什么

2. 安裝beego

// 下載beego的安裝包 go get -u github.com/beego/beego/v2@v2.0.0 // 可能會(huì)與遇到錯(cuò)誤,如下圖所示,然后開(kāi)啟set GO111MODULE=on即可,go env可以看環(huán)境變量配置,mac/Linux使用export GO111MODULE=on即可 set GO111MODULE=on
登錄后復(fù)制

go語(yǔ)言的beego是什么

如果安裝還是沒(méi)有反應(yīng)

set GO111MODULE=on set GOPROXY=https://goproxy.io  // 然后再執(zhí)行,即可完成安裝beego和bee $ go get -u github.com/beego/beego/v2 $ go get -u github.com/beego/bee/v2
登錄后復(fù)制

3. Beego啟動(dòng)流程分析

3.1 程序入口

import ( 	_ "FirstBeego/routers" 	beego "github.com/beego/beego/v2/server/web" )  func main() { 	beego.Run() }  // -------------------routers------------------- import ( 	"FirstBeego/controllers" 	beego "github.com/beego/beego/v2/server/web" )  func init() {// 會(huì)先執(zhí)行init()函數(shù)     beego.Router("/", &controllers.MainController{}) }  // -------------------MainController------------------- type MainController struct { 	beego.Controller }  func (c *MainController) Get() { 	c.Data["Website"] = "beego.me" 	c.Data["Email"] = "astaxie@gmail.com" 	c.TplName = "index.tpl" }
登錄后復(fù)制

Go語(yǔ)言執(zhí)行順序

go語(yǔ)言的beego是什么

Beego的beego.Run()邏輯

執(zhí)行完init()方法之后,程序繼續(xù)向下執(zhí)行,到main函數(shù),此時(shí)在main函數(shù)中執(zhí)行beego.Run(),主要做了以下幾件事:

  • 解析配置文件,即app.conf文件,獲取其中的端口、應(yīng)用名稱等信息
  • 檢查是否開(kāi)啟session,如果開(kāi)啟了session,會(huì)初始化一個(gè)session對(duì)象
  • 是否編譯模板,beego框架會(huì)在項(xiàng)目啟動(dòng)的時(shí)候根據(jù)配置把views目錄下的所有模板進(jìn)行預(yù)編譯,然后存放在map中,這樣可以有效的提高模板運(yùn)行的效率,不需要進(jìn)行多次編譯
  • 監(jiān)聽(tīng)服務(wù)端口,根據(jù)app.conf文件配置端口,啟動(dòng)監(jiān)聽(tīng)

4. Beego組織架構(gòu)

項(xiàng)目配置:conf

控制器:controllers

該目錄是存放控制器文件的目錄,所謂控制器就是控制應(yīng)用調(diào)用哪些業(yè)務(wù)邏輯,由controllers處理完HTTP請(qǐng)求以后,并負(fù)責(zé)返回給前端調(diào)用者。

數(shù)據(jù)層:models

models層可以解釋為實(shí)體層或者數(shù)據(jù)層,在models層中實(shí)現(xiàn)用戶和業(yè)務(wù)數(shù)據(jù)的處理,主要和數(shù)據(jù)庫(kù)表相關(guān)的一些操作會(huì)放在這個(gè)目錄中實(shí)現(xiàn),然后將執(zhí)行后的結(jié)果數(shù)據(jù)返回給controller層。增刪改查的操作都是在models中實(shí)現(xiàn)。

路由層:routers

路由層,即分發(fā),對(duì)進(jìn)來(lái)的后天的請(qǐng)求進(jìn)行分發(fā)操作,當(dāng)瀏覽器進(jìn)行一個(gè)http請(qǐng)求達(dá)到后臺(tái)的web項(xiàng)目的時(shí)候,必須要讓程序能夠根據(jù)瀏覽器的請(qǐng)求url進(jìn)行不同的業(yè)務(wù)處理,從接受前端請(qǐng)求到判斷執(zhí)行具體的業(yè)務(wù)邏輯的過(guò)程的工作,就讓routers來(lái)實(shí)現(xiàn)。

靜態(tài)資源目錄:static

在static目錄下,存放的是web項(xiàng)目的靜態(tài)資源文件,主要有css、img、js、html這幾類文件。html中會(huì)存放應(yīng)用的靜態(tài)頁(yè)面文件。

視圖模板:views

views中存放的就是應(yīng)用存放html模板頁(yè)面的目錄,所謂模板,就是頁(yè)面框架和布局是已經(jīng)用html寫好了的,只需要在進(jìn)行訪問(wèn)和展示的時(shí)候,將獲取到的數(shù)據(jù)動(dòng)態(tài)填充到頁(yè)面中,能夠提高渲染效率。因此,模板文件是非常常見(jiàn)的一種方式。

整個(gè)項(xiàng)目的架構(gòu)就是MVC的運(yùn)行模式。

5. beego框架路由設(shè)置

在beego框架中,支持四種路由設(shè)置,分別是:基礎(chǔ)路由固定路由正則路由自動(dòng)路由

基礎(chǔ)路由

直接給過(guò)beego.Get()beego.Post()beego.Put()beego.Delete()等方法進(jìn)行路由的映射,。

beego.Get("",func) // 表示Get beego.Post("",func) // 表示Post
登錄后復(fù)制

固定路由

beego.Router("/",controller)
登錄后復(fù)制

Get請(qǐng)求就會(huì)對(duì)應(yīng)到Get方法,Post對(duì)應(yīng)到post方法,Delete對(duì)應(yīng)到Delete方法,Header方法對(duì)應(yīng)到Header方法。

正則路由

正則路由是指可以在進(jìn)行固定路由的基礎(chǔ)上,支持匹配一定格式的正則表達(dá)式,比如:id:username自定義正則,file的路徑和后綴切換以及全匹配等操作。

自定義路由

在開(kāi)發(fā)的時(shí)候用固定匹配想要直接執(zhí)行對(duì)應(yīng)的邏輯控制方法,因此beego提供了可以自定義的自定義路由配置。

beego.Router("/",&IndexController{},"")  // Router adds a patterned controller handler to BeeApp. // it's an alias method of HttpServer.Router. // usage: //  simple router //  beego.Router("/admin", &admin.UserController{}) //  beego.Router("/admin/index", &admin.ArticleController{}) // //  regex router // //  beego.Router("/api/:id([0-9]+)", &controllers.RController{}) // //  custom rules //  beego.Router("/api/list",&RestController{},"*:ListFood") //  beego.Router("/api/create",&RestController{},"post:CreateFood") //  beego.Router("/api/update",&RestController{},"put:UpdateFood") //  beego.Router("/api/delete",&RestController{},"delete:DeleteFood")
登錄后復(fù)制

6. 靜態(tài)文件的設(shè)置

在go的web項(xiàng)目中,一些靜態(tài)資源文件,如果用戶要訪問(wèn)靜態(tài)資源文件,則我們也是能夠訪問(wèn)到的,這需要我們的項(xiàng)目中進(jìn)行靜態(tài)資源設(shè)置。

beego.SetStaticPath("/down1","download1")
登錄后復(fù)制

這里的download目錄是指的非go web項(xiàng)目的static目錄下目錄,而是開(kāi)發(fā)者重新新建的另外的目錄。

7. Beego博客項(xiàng)目

beego的orm是可以自動(dòng)創(chuàng)建表的,與python的django框架有的一拼。

在Go中Object類型的數(shù)據(jù)使用interface{}空的接口類型來(lái)代替。

如果有js文件失效,注意清除緩存之后再來(lái)玩,否則添加的js不會(huì)生效。

// 首頁(yè)顯示內(nèi)容,f func MakeHomeBlocks(articles []Article, isLogin bool) template.HTML { 	htmlHome := "" 	// for index, value := range objects{} 實(shí)現(xiàn)遍歷 	for _, art := range articles { 		// 轉(zhuǎn)換為模板所需要的數(shù)據(jù) 		homePageParam := HomeBlockParam{} 		homePageParam.Id = art.Id 		homePageParam.Title = art.Title 		homePageParam.Tags = createTagsLinks(art.Tags) 		homePageParam.Short = art.Short 		homePageParam.Content = art.Content 		homePageParam.Author = art.Author 		homePageParam.CreateTime = utils.SwitchTimeStampToData(art.CreateTime) 		homePageParam.Link = "/article/" + strconv.Itoa(art.Id) 		homePageParam.UpdateLink = "/article/update?id=" + strconv.Itoa(art.Id) 		homePageParam.DeleteLink = "/article/delete?id=" + strconv.Itoa(art.Id) 		homePageParam.IsLogin = isLogin  		// 處理變量,利用ParseFile解析該文件,用于插入變量 		t, _ := template.ParseFiles("views/block/home_block.html") 		buffer := bytes.Buffer{} 		t.Execute(&buffer, homePageParam) 		htmlHome += buffer.String() 	} 	fmt.Println("htmlHome ===>", htmlHome) 	return template.HTML(htmlHome) } // 這里可以實(shí)現(xiàn)html模板的渲染和追加 最后以html代碼的形式插入到具體的前端html展示頁(yè)面
登錄后復(fù)制

博客項(xiàng)目大概做了三天吧。就搞完了。基本的代碼都是MVC結(jié)構(gòu),跟Java比較像,不過(guò)對(duì)HTML的支持,感覺(jué)beego做的更好一些。讓人使用起來(lái)就很舒服的感覺(jué)。其他的就下面總結(jié)一下吧:

beego的項(xiàng)目目錄結(jié)構(gòu)如下:

go語(yǔ)言的beego是什么

負(fù)責(zé)和數(shù)據(jù)庫(kù)交互的是model,model主要存放實(shí)體類和承接具體的數(shù)據(jù)請(qǐng)求等相關(guān)的方法操作,提供數(shù)據(jù)給controller層。

go語(yǔ)言的beego是什么

路由的話主要有四種:

  • 默認(rèn)路由:beego自帶模塊Post、Put、Delete、Head、Get等網(wǎng)絡(luò)請(qǐng)求類型的對(duì)應(yīng)方法

  • 自動(dòng)路由:自動(dòng)實(shí)現(xiàn)映射到Post、Put、Delete、Get等

  • 正則表達(dá)式路由:"/article/:id"接收參數(shù)的時(shí)候需要idStr := this.Ctx.Input.Param(":id")

  • 自定義路由:在博客開(kāi)發(fā)中基本就是自定義路由了/article/add

Session的處理:

  • 配置文件中配置session相關(guān)的配置
  • 代碼中通過(guò)SessionConfig進(jìn)行參數(shù)配置

操作session

  • SetSession:設(shè)置session值
  • GetSession:獲取session值
  • DelSession:刪除session值

View視圖模板:

  • controller.TplName指定渲染當(dāng)前頁(yè)面的模板文件全稱
  • 模板文件中通過(guò){{.param}}實(shí)現(xiàn)變量數(shù)據(jù)的獲取操作
  • controller.Data["param"]=xxx實(shí)現(xiàn)對(duì)頁(yè)面的需要使用的變量進(jìn)行賦值操作

項(xiàng)目打包運(yùn)行

// 項(xiàng)目可以部署在linux上面,一般通過(guò)bee來(lái)實(shí)現(xiàn)直接打包,打包命令為 bee pack -be GOOS=linux // linux上可以沒(méi)有g(shù)o的環(huán)境
登錄后復(fù)制

如果直接通過(guò)這個(gè)命令打包的話,會(huì)生成一個(gè)tar.gz的壓縮文件,此時(shí)我們可以tar -zxvf xxx.tar.gz進(jìn)行解壓縮。

然后對(duì)項(xiàng)目文件賦予執(zhí)行權(quán):chmod +x myblog即可配置到執(zhí)行權(quán)。如果現(xiàn)在直接執(zhí)行的話會(huì)報(bào)錯(cuò):

beego panic: err: go command required, not found: exec: “go”: executable file not found in $PATH: stderr:

解決辦法是把conf中的runmode=dev修改為runmode=prod即可實(shí)現(xiàn)執(zhí)行。

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
亚洲精品影院在线观看| 视频一区二区中文字幕| 99国产一区| 香蕉久久国产| 欧美日韩午夜电影网| 精品视频网站| 欧美日韩日本国产亚洲在线| 日韩中出av| 中文在线а√在线8| 欧美日韩四区| 久久国内精品自在自线400部| 国产精品magnet| re久久精品视频| 国产精品一区二区99| 午夜欧美精品| 日韩88av| 国产在线观看91一区二区三区 | 国产极品模特精品一二| 99tv成人| 卡一卡二国产精品| 四虎在线精品| 夜夜精品视频| 五月天激情综合网| 99免费精品| 成人免费网站www网站高清| 麻豆国产精品一区二区三区| 日本va欧美va瓶| 亚洲天堂av资源在线观看| 亚洲精品中文字幕乱码| 久久一区亚洲| 国产福利一区二区三区在线播放| 亚洲精品乱码久久久久久蜜桃麻豆| 久久一区二区三区喷水| 新版的欧美在线视频| 高潮一区二区| 久久精品免费一区二区三区| 久久九九精品| 蜜臀精品久久久久久蜜臀| 青草综合视频| 久久亚洲资源中文字| 成人av三级| 亚洲无线观看| 国产精品3区| 久久三级福利| 日韩专区在线视频| 欧美在线黄色| 久久99久久久精品欧美| 国产精品成人自拍| 日韩成人午夜精品| 蜜臀av一区二区在线免费观看| 91超碰国产精品| 一区二区亚洲精品| 欧美在线亚洲| 国产视频欧美| 国产日韩专区| 欧美亚洲三区| 精品国产成人| 精品国产精品国产偷麻豆| 精品高清久久| 91麻豆精品激情在线观看最新| 亚洲啊v在线免费视频| 欧美日韩一区二区三区四区在线观看 | 99久久久久国产精品| 麻豆精品视频在线观看免费| 欧美国产另类| 国产aa精品| 亚洲色诱最新| 国产亚洲欧美日韩精品一区二区三区 | 亚洲精品黄色| 久久久久一区| 欧美a一区二区| 久久激情综合网| 精品国产不卡| 日韩精品影视| 欧美日韩一区二区三区不卡视频 | 亚洲一区二区三区久久久| 婷婷综合一区| 伊人精品一区| 一区二区视频欧美| 久久久久蜜桃| 国产成人精品一区二区三区免费 | 日韩欧美中文字幕电影| 美女视频黄 久久| 日韩精品一二区| 日韩在线精品| 亚洲精品网址| 国产一区二区三区不卡视频网站| 日韩精品视频一区二区三区| 国产精品videossex| 日本一区二区三区视频在线看| 精品中文字幕一区二区三区| 国产免费成人| 亚洲中字黄色| 免费视频亚洲| 久久精品国产99久久| 国产精品地址| 国产精品日韩| 综合激情网...| 国产美女撒尿一区二区| 精品一区二区三区免费看| 久久精品72免费观看| 国产极品模特精品一二| 樱桃视频成人在线观看| caoporn视频在线| 国产一区二区亚洲| 国产精品v一区二区三区| 国产欧美精品| 亚洲精品福利电影| 神马日本精品| 欧美在线亚洲| 美女久久网站| 国产综合色区在线观看| 久久中文视频| 日韩精品亚洲专区| 国产亚洲一卡2卡3卡4卡新区| 国产精品蜜月aⅴ在线| 91欧美在线| 久久aⅴ国产紧身牛仔裤| 欧美日本久久| 日韩在线观看一区| 天堂av在线一区| 久久中文字幕一区二区三区| 国精品一区二区| 国产精品一二| 午夜国产一区二区| 国产精品欧美在线观看| 电影亚洲精品噜噜在线观看| 国产精品美女久久久| 精品高清久久| 日韩一区二区三区高清在线观看| 久久中文欧美| 亚洲精品在线国产| 激情婷婷久久| 国产粉嫩在线观看| 欧美伊人久久| 免费av一区二区三区四区| 婷婷综合成人| 男人天堂欧美日韩| 久久久天天操| 国产videos久久| 国产精品nxnn| 国产伦精品一区二区三区视频 | 婷婷成人基地| 国产精品久久乐| 亚洲免费毛片| 欧美+日本+国产+在线a∨观看| 亚洲天堂av资源在线观看| 日韩大片在线播放| 国产精品99精品一区二区三区∴ | 久久精品理论片| 精品国产一区二区三区av片| 欧美香蕉视频| 在线综合视频| 国产乱人伦丫前精品视频| 另类专区亚洲| 一本一本久久| 国产精品久久久久久妇女| 国产精成人品2018| 四虎4545www国产精品| 亚洲影视一区二区三区| 精品一区二区三区四区五区| 日韩在线观看一区| 久久在线免费| 日本不卡一二三区黄网| 国产剧情一区二区在线观看| 国产精品黄色| 国产精品13p| 一区久久精品| 成人羞羞视频播放网站| 日韩中文首页| 亚洲国产一区二区三区在线播放| 日av在线不卡| 日韩在线麻豆| 欧美日韩18| 久久精品免费一区二区三区| 最新国产精品| 成人片免费看| 日韩av中文字幕一区二区三区| 国产福利一区二区精品秒拍 | 蜜桃精品视频| 免费视频亚洲| 免费观看亚洲天堂| 国产精品日本| 国产精品久久| 三级欧美韩日大片在线看| 国产欧美亚洲一区| 日韩中文欧美| 国产精品资源| 好看不卡的中文字幕| 国产精品一国产精品| 婷婷综合六月| 久久久久国产精品一区二区| 国产亚洲一区二区三区不卡| 亚洲丝袜美腿一区| 综合五月婷婷| 青青草精品视频| 国产精品亚洲人成在99www| 亚洲精品一二三区区别| 欧美黄色一区| 国产精品欧美在线观看|