beego是一個快速開發(fā)Go應(yīng)用的http框架,作者是SegmentFault 用戶,go 語言方面技術(shù)大牛。beego可以用來快速開發(fā)API、Web、后端服務(wù)等各種應(yīng)用,是一個
RESTFul的框架,主要設(shè)計靈感來源于
tornado、sinatra、
flask這三個框架,但是結(jié)合了Go本身的一些特性(interface、struct繼承等)而設(shè)計的一個框架。
beego是基于八大獨(dú)立的模塊之上構(gòu)建的,是一個高度
解耦的框架。當(dāng)初設(shè)計beego的時候就是考慮功能模塊化,用戶即使不適用beego的http邏輯,也是可以在使用這些獨(dú)立模塊,例如你可以使用cache模塊來做你的緩存邏輯,使用日志模塊來記錄你的操作信息,使用
config模塊來解析你各種格式的文件,所以不僅僅在beego開發(fā)中,你的socket游戲開發(fā)中也是很有用的模塊,這也是beego為什么受歡迎的一個原因。大家如果玩過樂高的話,應(yīng)該知道很多高級的東西都是一塊一塊的積木搭建出來的,而設(shè)計beego的時候,這些模塊就是積木,高級機(jī)器人就是beego。至于這些模塊的功能以及如何使用會在后面的文檔會逐一介紹。
既然beego是基于這些模塊構(gòu)建的,那么他的執(zhí)行邏輯是怎么樣的呢?beego是一個典型的MVC架構(gòu),他的執(zhí)行邏輯如下圖所示:
一般的beego項目的目錄如下所示:
├── conf
│ └── app.conf
├── controllers│
├── admin
│ └── default.go
├── main.go
├── models
│ └── models.go
├── static│
├── css│
├── ico
│ ├── img
│ └── js└── views
├── admin
└── index.tpl
從上面的目錄結(jié)構(gòu)我們可以看出來M(models目錄)、V(views目錄)、C(controllers目錄)的結(jié)構(gòu),main.go是入口文件。
選擇 Go 語言斷斷續(xù)續(xù)看了 Go 幾個星期了,講真的真是喜歡的不得了。認(rèn)真學(xué)過之后,你會覺得非常的優(yōu)雅,寫東西很舒服。學(xué)習(xí) Go 我覺得很有必要的是,Go 中自帶的數(shù)據(jù)結(jié)構(gòu)很少,類似于 List 或者 Tree 之類的,最好嘗試一下如何去設(shè)計一些常用的數(shù)據(jù)結(jié)構(gòu)。話說回來,Go 的出身始終是一門后端語言。我非常后悔用 Flask 或者 Django 來作為我的后端入門框架或者選擇。封裝的太好了,往往對于一個入門新手來說學(xué)習(xí)不到什么。 而 Go 就不一樣了,它天生被設(shè)計是一門后端語言。也就是說,你將會學(xué)習(xí)到非常多的后端知識??纯聪旅孢@一張圖,當(dāng)時我看著就有一種很過癮的感覺,因為這些知識你都知道,但是作為一個后端開發(fā)者你沒有去了解過,這是非常大的失誤。并不是想去用學(xué)習(xí)好 Go 去彌補(bǔ)沒有學(xué)習(xí)好 C++ 的遺憾,只是新生事物,多嘗試嘗試總是極好的,哪怕只是淺嘗輒止。Go 作為一門新的語言,其語言設(shè)計的特性,背后 Google 爸爸的撐腰以及現(xiàn)在 Docker 技術(shù)發(fā)展,前景應(yīng)該還是不錯的。所以如果你是編程新手或者是想入門后端的開發(fā)者,我強(qiáng)烈建議你選擇 Go 語言。 語言學(xué)到最后,框架總是少不了的。雖然不能完全依賴框架,但是還是可以學(xué)習(xí)一下框架的設(shè)計思想。對于 Beego 框架的評價總是各種各樣,這也要看自己的選擇了。之所以選擇 Beego 框架來入門,主要是因為其詳細(xì)的文檔以及教程示例非常多。 Go Web 初探先看一下最基本的 Go 中的 web 服務(wù),只用到了 Go 中的 net/http 這個包:
執(zhí)行 安裝 Go 以及 Beego基本的你得有個 Go 語言的環(huán)境,安裝什么的就不講了。只是最后配置其環(huán)境變量許多人都容易弄錯,包括我自己也是。其實多次也能夠配置好,只是每次重新啟動就提示上次的配置無效,也不知道是怎么回事。講一下安裝 Beego 框架
在終端輸入如上所示代碼,其中 allenwu 替換成你自己的 username,并且在根目錄下創(chuàng)建 GoProjects 文件夾,作為下一步工作目錄。配置好之后,輸入如下命令確保保存成功: source ~/.zshrc
最后當(dāng)然要測試一下環(huán)境變量是否配置成功,在 shell 中輸入 配置環(huán)境沒問題之后,就是安裝 go 和 bee 工具了:
檢查安裝是否成功,啟動一個
會提示你在瀏覽器輸入地址,然后就能知道是否安裝成功啦。 體驗 Beego 框架如下圖所示即為 Beego 官網(wǎng)所提供的 Beego 框架概覽,一眼就能明白其 MVC 模式的構(gòu)造,結(jié)構(gòu)也是非常清晰的。 安裝好 Beego 框架之后,官方給了三個 samples,我們選擇其中一個來進(jìn)行入門體驗一下。如下實例選擇的是 todo App。我們將 clone 下來的 todo App 放置到指定目錄下,用 sublimeText3 打開這個示例項目,強(qiáng)烈建議你打開側(cè)邊欄設(shè)置選項: 了解完基本的結(jié)構(gòu)之后,我們啟動這個 App。我們采用 Beego 提供的工具 bee 來啟動。進(jìn)入到最終的指定文件夾 todo 之后,執(zhí)行 可以看到打印出一個 Bee 的 Logo,表示啟動成功了,稍等一下就會繼續(xù)提示你在瀏覽器中輸入指定 IP 地址和端口號,也就是如下所示: 官方講這個小 App 結(jié)合了 Angular ,體驗還是挺不錯的。接下來我們來簡單分析一下示例 App 的代碼結(jié)構(gòu)。首先入口程序是 Main.go,這是想都不用想的,一個程序員的直覺:
我們第一感覺還是看到 Main() 函數(shù),看到了 Router() 函數(shù),有一些 web 開發(fā)或者開發(fā)經(jīng)驗的應(yīng)該都知道這是路由機(jī)制。對應(yīng)的是 url 與 Controller。在 MVC 框架中 Controller 是一個很重要的概念了。我們自然下一步驟就是去往 Controller 中看看:
在看完 Go 的基本語法之后,看到注釋一應(yīng)該也能明白一個一二三四了,我們聲明了一個控制器 在注釋三處,我們看到了
上述路由引導(dǎo)我們進(jìn)入了 TaskController 這個控制器來了,我們分析一下下面這個文件:
很明顯我們看到了 models 關(guān)鍵字,并且調(diào)用了其中的 Task ,我們選擇進(jìn)入 Task.go 文件看看:
如上所示的 task Model 主要就是定義了 task 這個實體該有的成員變量。以及一個 taskManager 來管理這些 task,其整體結(jié)構(gòu)在理解了 Go 語言的一些基本的機(jī)制之后還是比較簡單的。 在之前的整個實例結(jié)構(gòu)中,我們還看到了如下所示的靜態(tài)文件,它們的作用就很明顯啦:
好了,以上就是 Go 的一個框架 Beego 的入門實例了,其實很簡單。我也只是簡單的寫一下入門的東西。后續(xù)研究一下 Go 的自動化 API 構(gòu)建。往后繼續(xù)學(xué)習(xí) Go 和 Docker 的結(jié)合應(yīng)用吧。 【參考文章】
1、Go中國技術(shù)社區(qū) - golang https:///
2、首頁 - beego: 簡約 & 強(qiáng)大并存的 Go 應(yīng)用框架 https:///
3、beego:從入門到放棄 - http://blog.csdn.net/github_37320188/article/details/79107380
|
|