一、Beego介紹與項目創建及啟動


一、beego 簡介

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

        官網地址如下: https://beego.me/

二、beego 的架構

        beego 的整體設計架構如下所示:

       beego 是基於八大獨立的模塊構建的,是一個高度解耦的框架。當初設計 beego 的時候就是考慮功能模塊化,用戶即使不使用 beego 的 HTTP 邏輯,也依舊可以使用這些獨立模塊,例如:你可以使用 cache 模塊來做你的緩存邏輯;使用日志模塊來記錄你的操作信息;使用 config 模塊來解析你各種格式的文件。所以 beego 不僅可以用於 HTTP 類的應用開發,在你的 socket 游戲開發中也是很有用的模塊,這也是 beego 為什么受歡迎的一個原因。大家如果玩過樂高的話,應該知道很多高級的東西都是一塊一塊的積木搭建出來的,而設計 beego 的時候,這些模塊就是積木,高級機器人就是 beego。至於這些模塊的功能以及如何使用會在后面的文檔逐一介紹。

三、beego 的執行邏輯

        既然 beego 是基於這些模塊構建的,那么它的執行邏輯是怎么樣的呢?beego 是一個典型的 MVC 架構,它的執行邏輯如下圖所示:

 

四、beego 項目結構

       一般的 beego 項目的目錄如下所示:

myproject ├── conf    └── app.conf ├── controllers    └── default.go ├── main.go ├── models ├── routers    └── router.go ├── static    ├── css    ├── img    └── js ├── tests    └── default_test.go └── views └── index.tpl

       從上面的目錄結構我們可以看出來 M(models 目錄)、V(views 目錄)和 C(controllers 目錄)的結構, main.go 是入口文件。

五、創建工程及運行項目

     1. 安裝 beego

go get github.com/astaxie/beego

     2. 創建項目目錄

     創建項目目錄我們可以使用bee這個工具,bee 工具是一個為了協助快速開發 beego 項目而創建的項目,通過 bee 您可以很容易的進行 beego 項目的創建、熱編譯、開發、測試、和部署。

go get github.com/beego/bee

      安裝完之后,bee 可執行文件默認存放在 $GOPATH/bin 里面,為了方便使用 bee,將 bee 的可執行文件路徑添加到環境變量中。也就是把 $GOPATH/bin 添加到您的環境變量中,完成之后我們在命令行中執行下面命令,可以看到 bee 的參數:

F:\Go\project\src\go_dev\GoProject\GoWeb>bee
Bee is a Fast and Flexible tool for managing your Beego Web Application.

USAGE
    bee command [arguments]

AVAILABLE COMMANDS

    version     Prints the current Bee version
    migrate     Runs database migrations
    api         Creates a Beego API application
    bale        Transforms non-Go files to Go source files
    fix         Fixes your application by making it compatible with newer versio
ns of Beego
    dlv         Start a debugging session using Delve
    dockerize   Generates a Dockerfile for your Beego application
    generate    Source code generator
    hprose      Creates an RPC application based on Hprose and Beego frameworks
    new         Creates a Beego application
    pack        Compresses a Beego application into a single file
    rs          Run customized scripts
    run         Run the application by starting a local development server
    server      serving static content over HTTP on port

Use bee help [command] for more information about a command.

ADDITIONAL HELP TOPICS


Use bee help [topic] for more information about that topic.

     下來重點看幾個命令:

  • new 命令

     new 命令是新建一個 Web 項目,我們在命令行下執行 bee new <項目名> 就可以創建一個新的項目。默認項目是創建在$GOPATH/src/下,如果進入到該目錄下則可以將創建的項目隨意放置位置。下來我們創建一個myproject 的項目:

F:\Go\project\src\go_dev\GoProject\GoWeb>bee new myproject
______
| ___ \
| |_/ /  ___   ___
| ___ \ / _ \ / _ \
| |_/ /|  __/|  __/
\____/  \___| \___| v1.10.0
2019/03/19 22:03:00 INFO     ▶ 0001 Creating application...
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\myproject\
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\myproject\conf\
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\myproject\controllers\

        create   F:\Go\project\src\go_dev\GoProject\GoWeb\myproject\models\
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\myproject\routers\
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\myproject\tests\
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\myproject\static\
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\myproject\static\js\
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\myproject\static\css\
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\myproject\static\img\
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\myproject\views\
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\myproject\conf\app.con
f
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\myproject\controllers\
default.go
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\myproject\views\index.
tpl
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\myproject\routers\rout
er.go
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\myproject\tests\defaul
t_test.go
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\myproject\main.go
2019/03/19 22:03:01 SUCCESS  ▶ 0002 New application successfully created!
  • api 命令

     上面的 new 命令是用來新建 Web 項目,不過很多用戶使用 beego 來開發 API 應用。所以這個 api 命令就是用來創建 API 應用的,執行命令之后如下所示:

F:\Go\project\src\go_dev\GoProject\GoWeb>bee api apiproject
______
| ___ \
| |_/ /  ___   ___
| ___ \ / _ \ / _ \
| |_/ /|  __/|  __/
\____/  \___| \___| v1.10.0
2019/03/19 22:25:43 INFO     ▶ 0001 Creating API...
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\apiproject
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\apiproject\conf
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\apiproject\controllers

        create   F:\Go\project\src\go_dev\GoProject\GoWeb\apiproject\tests
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\apiproject\conf\app.co
nf
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\apiproject\models
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\apiproject\routers\
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\apiproject\controllers
\object.go
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\apiproject\controllers
\user.go
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\apiproject\tests\defau
lt_test.go
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\apiproject\routers\rou
ter.go
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\apiproject\models\obje
ct.go
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\apiproject\models\user
.go
        create   F:\Go\project\src\go_dev\GoProject\GoWeb\apiproject\main.go
2019/03/19 22:25:43 SUCCESS  ▶ 0002 New API successfully created!

     可以看出兩個項目在目錄結構上的差別:

     從上面的目錄我們可以看到和 Web 項目相比,少了 static 和 views 目錄,多了一個 test 模塊,用來做單元測試的。同時,該命令還支持一些自定義參數自動連接數據庫創建相關 model 和 controller: 

     bee api [appname] [-tables=""] [-driver=mysql] [-conn="root:<password>@tcp(127.0.0.1:3306)/test"],如果 conn 參數為空則創建一個示例項目,否則將基於鏈接信息鏈接數據庫創建項目。

  • run 命令

     我們在開發 Go 項目的時候最大的問題是經常需要自己手動去編譯再運行,bee run 命令是監控 beego 的項目,通過 fsnotify 監控文件系統(但是注意該命令必須在 $GOPATH/src/appname 下執行),當文件發生變化時他會熱加載編譯文件。

     我們從命令行進入到項目目錄下執行 bee run,會自動編譯並執行該項目(編譯完成會在項目根目錄下生成一個 項目名.exe可執行文件):

F:\Go\project\src\go_dev\GoProject\GoWeb\myproject>bee run
______
| ___ \
| |_/ /  ___   ___
| ___ \ / _ \ / _ \
| |_/ /|  __/|  __/
\____/  \___| \___| v1.10.0
2019/03/19 22:38:44 INFO     ▶ 0001 Using 'myproject' as 'appname'
2019/03/19 22:38:44 INFO     ▶ 0002 Initializing watcher...
go_dev/GoProject/GoWeb/myproject/controllers
go_dev/GoProject/GoWeb/myproject/routers
go_dev/GoProject/GoWeb/myproject
2019/03/19 22:39:32 SUCCESS  ▶ 0003 Built Successfully!
2019/03/19 22:39:32 INFO     ▶ 0004 Restarting 'myproject.exe'...
2019/03/19 22:39:32 SUCCESS  ▶ 0005 './myproject.exe' is running...

     此時打開瀏覽器,輸入 http://localhost:8080/ 會出現下面畫面:

     bee的更多命令可以看 GO的官方文檔:https://beego.me/docs/install/bee.md#api-%E5%91%BD%E4%BB%A4

 六、參考文獻

  • https://beego.me/docs/intro/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM