<dd id="3pk9i"><optgroup id="3pk9i"><video id="3pk9i"></video></optgroup></dd>
<rp id="3pk9i"></rp>

<dd id="3pk9i"><track id="3pk9i"></track></dd>
      1. <th id="3pk9i"></th>
        1. <ol id="3pk9i"><ruby id="3pk9i"></ruby></ol>

        2. go語言的beego是什么-最新

          來源:php中文網 | 2023-01-07 15:02:44 |

          本教程操作環境:windows7系統、GO 1.18版本、Dell G3電腦。


          (資料圖片)

          1. Beego簡介

          1.1 beego是什么

          Beego是一個使用Go語言開發的應用Web框架,框架開始于2012年,目的是為大家提供一個高效率的Web應用開發框架,該框架采用模塊封裝,使用簡單,容易學習。對程序員來說,beego掌握起來非常簡單,只需要關注業務邏輯實現即可,框架自動為項目需求提供不同的模塊功能。

          beego可以用來快速開發API、Web、后端服務等各種應用,是一個RESTFul的框架,主要設計靈感來源于tornado、sinatra、flask這三個框架,但是結合了Go本身的一些特性(interface、struct繼承等)而設計的一個框架。

          特性

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

          1.2 命令行工具Bee

          bee

          bee是一個開發工具,協助Beego框架開發項目是進行創建項目、運行項目、熱部署等相關的項目管理的工具,beego是源碼負責開發、bee是工具負責構建和管理項目。

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

          2. 安裝beego

          // 下載beego的安裝包go get -u github.com/beego/beego/v2@v2.0.0// 可能會與遇到錯誤,如下圖所示,然后開啟set GO111MODULE=on即可,go env可以看環境變量配置,mac/Linux使用export GO111MODULE=on即可set GO111MODULE=on

          如果安裝還是沒有反應

          set GO111MODULE=onset GOPROXY=https://goproxy.io// 然后再執行,即可完成安裝beego和bee$ go get -u github.com/beego/beego/v2$ go get -u github.com/beego/bee/v2

          3. Beego啟動流程分析

          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() {// 會先執行init()函數    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"}

          Go語言執行順序

          Beego的beego.Run()邏輯

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

          解析配置文件,即app.conf文件,獲取其中的端口、應用名稱等信息檢查是否開啟session,如果開啟了session,會初始化一個session對象是否編譯模板,beego框架會在項目啟動的時候根據配置把views目錄下的所有模板進行預編譯,然后存放在map中,這樣可以有效的提高模板運行的效率,不需要進行多次編譯監聽服務端口,根據app.conf文件配置端口,啟動監聽

          4. Beego組織架構

          項目配置:conf

          控制器:controllers

          該目錄是存放控制器文件的目錄,所謂控制器就是控制應用調用哪些業務邏輯,由controllers處理完HTTP請求以后,并負責返回給前端調用者。

          數據層:models

          models層可以解釋為實體層或者數據層,在models層中實現用戶和業務數據的處理,主要和數據庫表相關的一些操作會放在這個目錄中實現,然后將執行后的結果數據返回給controller層。增刪改查的操作都是在models中實現。

          路由層:routers

          路由層,即分發,對進來的后天的請求進行分發操作,當瀏覽器進行一個http請求達到后臺的web項目的時候,必須要讓程序能夠根據瀏覽器的請求url進行不同的業務處理,從接受前端請求到判斷執行具體的業務邏輯的過程的工作,就讓routers來實現。

          靜態資源目錄:static

          在static目錄下,存放的是web項目的靜態資源文件,主要有css、img、js、html這幾類文件。html中會存放應用的靜態頁面文件。

          視圖模板:views

          views中存放的就是應用存放html模板頁面的目錄,所謂模板,就是頁面框架和布局是已經用html寫好了的,只需要在進行訪問和展示的時候,將獲取到的數據動態填充到頁面中,能夠提高渲染效率。因此,模板文件是非常常見的一種方式。

          整個項目的架構就是MVC的運行模式。

          5. beego框架路由設置

          在beego框架中,支持四種路由設置,分別是:基礎路由、固定路由、正則路由自動路由

          基礎路由

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

          beego.Get("",func) // 表示Getbeego.Post("",func) // 表示Post

          固定路由

          beego.Router("/",controller)

          Get請求就會對應到Get方法,Post對應到post方法,Delete對應到Delete方法,Header方法對應到Header方法。

          正則路由

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

          自定義路由

          在開發的時候用固定匹配想要直接執行對應的邏輯控制方法,因此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")

          6. 靜態文件的設置

          在go的web項目中,一些靜態資源文件,如果用戶要訪問靜態資源文件,則我們也是能夠訪問到的,這需要我們的項目中進行靜態資源設置。

          beego.SetStaticPath("/down1","download1")

          這里的download目錄是指的非go web項目的static目錄下目錄,而是開發者重新新建的另外的目錄。

          7. Beego博客項目

          beego的orm是可以自動創建表的,與python的django框架有的一拼。

          在Go中Object類型的數據使用interface{}空的接口類型來代替。

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

          // 首頁顯示內容,ffunc MakeHomeBlocks(articles []Article, isLogin bool) template.HTML {htmlHome := ""http:// for index, value := range objects{} 實現遍歷for _, art := range articles {// 轉換為模板所需要的數據homePageParam := HomeBlockParam{}homePageParam.Id = art.IdhomePageParam.Title = art.TitlehomePageParam.Tags = createTagsLinks(art.Tags)homePageParam.Short = art.ShorthomePageParam.Content = art.ContenthomePageParam.Author = art.AuthorhomePageParam.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)}// 這里可以實現html模板的渲染和追加 最后以html代碼的形式插入到具體的前端html展示頁面

          博客項目大概做了三天吧。就搞完了?;镜拇a都是MVC結構,跟Java比較像,不過對HTML的支持,感覺beego做的更好一些。讓人使用起來就很舒服的感覺。其他的就下面總結一下吧:

          beego的項目目錄結構如下:

          負責和數據庫交互的是model,model主要存放實體類和承接具體的數據請求等相關的方法操作,提供數據給controller層。

          路由的話主要有四種:

          默認路由:beego自帶模塊Post、Put、Delete、Head、Get等網絡請求類型的對應方法

          自動路由:自動實現映射到Post、Put、Delete、Get等

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

          自定義路由:在博客開發中基本就是自定義路由了/article/add

          Session的處理:

          配置文件中配置session相關的配置代碼中通過SessionConfig進行參數配置

          操作session

          SetSession:設置session值GetSession:獲取session值DelSession:刪除session值

          View視圖模板:

          controller.TplName指定渲染當前頁面的模板文件全稱模板文件中通過{{.param}}實現變量數據的獲取操作controller.Data["param"]=xxx實現對頁面的需要使用的變量進行賦值操作

          項目打包運行

          // 項目可以部署在linux上面,一般通過bee來實現直接打包,打包命令為bee pack -be GOOS=linux // linux上可以沒有go的環境

          如果直接通過這個命令打包的話,會生成一個tar.gz的壓縮文件,此時我們可以tar -zxvf xxx.tar.gz進行解壓縮。

          然后對項目文件賦予執行權:chmod +x myblog即可配置到執行權。如果現在直接執行的話會報錯:

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

          解決辦法是把conf中的runmode=dev修改為runmode=prod即可實現執行。

          以上就是go語言的beego是什么的詳細內容,更多請關注php中文網其它相關文章!

          關鍵詞: go語言 Golang

          中文字幕在线观看2021
          <dd id="3pk9i"><optgroup id="3pk9i"><video id="3pk9i"></video></optgroup></dd>
          <rp id="3pk9i"></rp>

          <dd id="3pk9i"><track id="3pk9i"></track></dd>
            1. <th id="3pk9i"></th>
              1. <ol id="3pk9i"><ruby id="3pk9i"></ruby></ol>