GoLang-Beego.Godep

GoLang-Beego.Godep

介紹
你是一個從PHP,Python,Ruby等動態(tài)語言轉(zhuǎn)移到Go的web應用開發(fā)人員嗎症杏?想知道怎樣使用Go開發(fā)基于web的應用程序嗎厉颤?你想要知道怎樣使用類似于已知的框架的方式進行開發(fā)喧伞,在那兒你能重復的利用已知的知識潘鲫?
如果是這樣溉仑,那么你可能已經(jīng)做了一些搜索,無論是在谷歌怨喘,StackOverflow的或其他網(wǎng)站必怜,以尋求一個框架來幫助你;你可能已經(jīng)看到了有許多可能的選擇后频,包括Beego,Martini和Gorilla,另外還有net/http包驻售。
這四個當中欺栗,我嘗試的最多的就是Beego征峦。我認為眶痰,它的功能十分的豐富竖伯,但是不太復雜因宇,因此上手是相對較快的察滑。

地獄星星翻譯于 3 個月 前
0人頂

頂 翻譯的不錯哦!

Beego不是一般的web開發(fā)包贺辰。它構(gòu)建在大量已存在的Go之上饲化,提供了許多的功能吃靠,以下是提供的功能:
一個完整的ORM

緩存

支持session

國際化(i18n)

實時監(jiān)測和重載

發(fā)布支持

但是同時在Beego和以前提到的動態(tài)語言的框架也有一些相似性。他們之間有足夠的差異礁阁,在成為真正的生產(chǎn)力和精通之前需要投入一些時間姥闭。
此外棚品,雖然Beego的文檔是比較全面的,我還是感覺到它的文檔在某些地方有所缺失掺涛,因為我寫了這兩個部分的系列文章幫助克服這個問題并幫助你學習Beego的基礎薪缆。

地獄星星翻譯于 3 個月 前
0人頂

頂 翻譯的不錯哦!

在這個系列中拣帽,你將會了解到它是一個多么出色的框架以及它是多么的為我們這些開發(fā)者著想减拭。具體到部分一中拧粪,我們將會包含以下內(nèi)容:
安裝Beego以及命令行工具Bee

創(chuàng)建一個項目Creating a project

動作(Actions)

視圖于模板(Views / Templates)

路由

請求參數(shù)(Request Parameters)

如果你想要閱讀這個系列的全部的源碼沧侥,你可以在Github中查看宴杀。你可以隨意的在線瀏覽或者克隆到本地并且拿它做實驗旺罢。讓我們開始吧扁达!
在我們開始之前,確保你已經(jīng)將GO語言環(huán)境配置好了穗酥。如果沒有砾跃,或者你不明白我在說什么抽高,先去看一下 Getting Started with Go 或者 this post from Bill Kennedy翘骂,然后再回來繼續(xù)。

中獎啦翻譯于 3 個月 前
0人頂

頂 翻譯的不錯哦!

  1. 安裝 Beego
    Ok,讓我們從安裝Beego開始昌执。像其他一些框架和工具包(toolkit)一樣诈泼,通過使用bee命令行工具來創(chuàng)建項目框架铐达,Bee可以完成一些工作:
    創(chuàng)建一個新的應用程序

運行一個應用程序

測試一個應用程序

創(chuàng)建路由以及其他

Bee并不是運行Beego應用的唯一一個方法瓮孙,但是我在這兩部分的系列教程中將著重講它的使用衷畦。你可以通過運行g(shù)o get github.com/beego/bee來安裝它知牌。

  1. 創(chuàng)建核心項目
    安裝完之后角寸,在你的$GOPATH所在的目錄中運行下面的命令扁藕,將會生成一個項目的框架結(jié)構(gòu)亿柑,我們將其命名為sitepointgoapp
    bee new sitepointgoapp
    這將會輸出類似于下面的內(nèi)容:
    [INFO] Creating application.../Users/matthewsetter/Documents/workspace/Golang/src/sitepointgoapp//Users/matthewsetter/Documents/workspace/Golang/src/sitepointgoapp/conf//Users/matthewsetter/Documents/workspace/Golang/src/sitepointgoapp/controllers//Users/matthewsetter/Documents/workspace/Golang/src/sitepointgoapp/models//Users/matthewsetter/Documents/workspace/Golang/src/sitepointgoapp/routers//Users/matthewsetter/Documents/workspace/Golang/src/sitepointgoapp/tests//Users/matthewsetter/Documents/workspace/Golang/src/sitepointgoapp/static//Users/matthewsetter/Documents/workspace/Golang/src/sitepointgoapp/static/js//Users/matthewsetter/Documents/workspace/Golang/src/sitepointgoapp/static/css//Users/matthewsetter/Documents/workspace/Golang/src/sitepointgoapp/static/img//Users/matthewsetter/Documents/workspace/Golang/src/sitepointgoapp/views//Users/matthewsetter/Documents/workspace/Golang/src/sitepointgoapp/conf/app.conf/Users/matthewsetter/Documents/workspace/Golang/src/sitepointgoapp/controllers/default.go/Users/matthewsetter/Documents/workspace/Golang/src/sitepointgoapp/views/index.tpl/Users/matthewsetter/Documents/workspace/Golang/src/sitepointgoapp/routers/router.go/Users/matthewsetter/Documents/workspace/Golang/src/sitepointgoapp/tests/default_test.go/Users/matthewsetter/Documents/workspace/Golang/src/sitepointgoapp/main.go14-05-14 06:02:59 [SUCC] New application successfully created!
    現(xiàn)在望薄,你將看到下面的文件目錄結(jié)構(gòu):
    sitepointgoapp ├── conf | └── app.conf├── controllers| └── default.go├── main.go├── models├── routers | └── router.go├── static│ ├── css│ ├── img│ └── js├── tests│ └── default_test.go└── views └── index.tpl
    觀察一下這些文件痕支,我們有:
    主文件main.go

主要配置文件conf/app.conf

一個默認的控制器controllers/default.go

一個默認的測試集合tests/default_test.go

一個默認的視圖模板views/index.tpl

OK卧须,最基本的程序以及準備好了,讓我們運行一下它蹦漠。在項目目錄$GOPATH/src/sitepointgoapp/下车海,運行下面的命令:
bee run
這將會加載我們的新程序容劳。除此之外竭贩,bee還監(jiān)控源文件的改動留量。如果檢測到改動,bee將會自動的重新加載應用程序忆绰。運行完上面的命令之后错敢,你應該會看到類似于下面的輸出信息:
14-05-05 11:34:17 [INFO] Start building...14-05-05 11:34:20 [SUCC] Build was successful14-05-05 11:34:20 [INFO] Restarting sitepointgoapp ...14-05-05 11:34:20 [INFO] ./sitepointgoapp is running...2014/05/05 11:34:20 [I] Running on :8080
你可以看到應用程序已經(jīng)在8080端口上運行了稚茅。在瀏覽器中訪問http://localhost:8080/將會顯示下面的輸出:

Beego App Home Page

這并沒有什么特別的地方亚享,但是它的確可以正常工作了欺税。那么晚凿,讓我們動手修改擴展一下默認的控制器晃虫,添加一個新的action哲银,以及一些自定義的路由。

中獎啦翻譯于 3 個月 前
0人頂

頂 翻譯的不錯哦!

  1. 添加一個新的action
    打開controllers/default.go,你可以看到一個非常簡單的控制器盲泛。這是因為所有的顯示邏輯被放在了視圖模板中寺滚。讓我們稍微修改一下這個控制器村视,看看如何添加視圖模板變量以及如何指定一個模板文件酒奶。在default.go中惋嚎,添加如下方法:
    func (main *MainController) HelloSitepoint() { main.Data["Website"] = "My Website" main.Data["Email"] = "your.email.address@example.com" main.Data["EmailName"] = "Your Name" main.TplNames = "default/hello-sitepoint.tpl"}

然我們看一下每一步的作用另伍。我們所做的是給當前的控制器添加了一個新的方法(或action)Get质况,通過將main MainController指定為這個方法的接收器结榄。
緊接著臼朗,我們初始化了三個模板變量视哑,
Website*, EmailEmailName誊涯,把它們保存在Controller的一個叫Data的字段里面暴构,該字段是一個map用來表示模板變量和值。
之后苹支,我將this.TplNames的值設置為default/hello-sitepoint.tpl來指定模板文件的名稱债蜜。默認情況下寻定,Beego會在views文件夾下查找指定的文件特姐。
因此黍氮,當這個路由起作用的時候唐含,Beego將會填充views/default/hello-sitepoint.tpl模板,并渲染它沫浆。

中獎啦翻譯于 3 個月 前
0人頂

頂 翻譯的不錯哦!

視圖
好了捷枯,讓我們創(chuàng)建和它對應的視圖。在views文件夾下专执,創(chuàng)建一個新的文件夾default淮捆,然后在其中創(chuàng)建一個名為hello-sitepoint.tpl的新文件,將下面的代碼寫在里面:
<header class="hero-unit"> <div class="container"> <div class="row"> <div class="hero-text"> <h1>Welcome to the Sitepoint / Beego App!</h1> <h2>This is My Test Version</h2> <p>{{.Website}} {{.Email}} {{.EmailName}}</p> </div> </div> </div></header>

如果這是你第一次在Go中使用模板攀痊,要知道一點,Beego的模板層繼承自 Go 的 html/template package拄显。想了解更多在模板中使用變量的例子苟径,請參考text/template包中的例子
和大多數(shù)Go的包一樣躬审,html/template的功能很多棘街,所以我在這里介紹幾個相關(guān)的功能。所有的模板變量都屬于全局的上下文承边,可以通過點操作符來訪問遭殉,通過{{}}語法來嵌入。
所以博助,想要訪問我們在之前在controller的action中定義的那山歌模板變量险污,可以使用{{.Website}},{{.Email}}, 和 {{.EmailName}}。

中獎啦翻譯于 3 個月 前
0人頂

頂 翻譯的不錯哦!

路由
Ok富岳,我們現(xiàn)在有了一個新的action和對應的視圖蛔糯。但是我們還不能進行路由拯腮。如果我們像訪問默認action之外的任何東西都會得到一個404錯誤頁面,如下面這個截圖所示渤闷。


Beego 404 Page

所以疾瓮,我們需要給它添加一個路由。在routers/router.go 中飒箭,將init方法改為下面這樣:
func init() { beego.Router("/", &controllers.MainController{}) beego.Router("/hello-world", &controllers.MainController{}, "get:HelloSitepoint")}

注意最后一行狼电,它所做的事是當我們嘗試去訪問/hello-world的時候,它會調(diào)用MainController中的HelloSitepoint action弦蹂。保存并等一小下以便完成重新編譯肩碟,之后在瀏覽器中打開http://localhost:8080/hello-world。如果所有的都沒有問題的話凸椿,會顯示出下面的頁面:

Beego Hello World Route

中獎啦翻譯于 3 個月 前
0人頂

頂 翻譯的不錯哦!

請求參數(shù)
到目前為止削祈,我們對這個簡單的action所做的都沒有問題。但是脑漫,在一個真實的程序中髓抑,我們要和請求交互,檢查query string 和 POST的數(shù)據(jù)优幸,之后做出相應的反應吨拍。那么,我們怎么在Beego中訪問這些信息呢网杆?
我們先從在query string中取出數(shù)據(jù)開始羹饰。Beego中另一個已經(jīng)預定義好的值是Context Module,它包含了輸入的值碳却,封裝了一個請求队秩。
它為我們提供了以下可以訪問的內(nèi)容:
方法

協(xié)議

user agent

query (Get and Post data)

session 信息以及更多

讓我們將這個程序變得更有趣一些,我們修改路由讓它需要傳入一個id的值昼浦,我們可以在action中取出改值馍资,并將其輸出。在router.go中座柱,將/get路由修改為下面這樣:
beego.Router("/hello-world/:id([0-9]+)", &controllhers.MainController{}, "get:HelloSitepoint")

現(xiàn)在迷帜,我們需要提供一個全部為數(shù)字的GET的值,因為我們在路由的正則中使用了([0-9]+)色洞。保存它,并且嘗試再次加載不帶id的/hello-world冠胯。你有沒有看到錯誤出現(xiàn)火诸?
現(xiàn)在,將它改為/hello-world/213荠察,就應該可以正常工作了置蜀。既然它沒問題了奈搜,讓我們保存請求信息。在Get方法中盯荤,this.TplNames之前添加下面的內(nèi)容:
this.Data["Id"] = this.Ctx.Input.Param(":id")

之后馋吗,在hello-world.tpl 將{{.Id}}添加到現(xiàn)有的模板變量的下面。重新加載頁面將會在Email Name的下面顯示出213秋秤。

中獎啦翻譯于 3 個月 前
0人頂

頂 翻譯的不錯哦!

其它翻譯版本(1)

通過方法類型限制Action
Ok,今天的任務差不多完成了宏粤,但在離開前我希望介紹最后一個東西。通常灼卢,你希望將某個action的訪問限制到一個或多個特定的方法绍哎。例如,你只希望通過POST請求訪問一個刪除路由鞋真;你只希望通過GET請求顯示搜索結(jié)果崇堰。
Beego簡化了通過所有方法類型的action訪問涩咖,或?qū)⒛硞€action的訪問限制到一個或幾個方法類型。也是在router.go中特幔,將/hello-world路由做如下改變:
beego.Router("/hello-world/:id([0-9]+)", &controllers.中MainController{}, "get,post:Get")
這樣可以允許GET或POST請求分發(fā)到/hello-world/。試使用curl進行PUT或DELETE訪問盾似,使用如下的示例并查看結(jié)果

PUT requestcurl -X PUT http://localhost:8080/hello-world/213# DELETE requestcurl -X DELETE http://localhost:8080/hello-world/213

--zxp翻譯于 3 個月 前
0人頂

頂 翻譯的不錯哦!

結(jié)束語
我希望你們會喜歡這篇對Beego web應用框架的介紹。在第二部分中零院,我們將集成數(shù)據(jù)庫(SQLite3),并加入數(shù)據(jù)模型告抄、表單和驗證撰茎。
在第二部分結(jié)束的時候,我們將有一個很好的應用程序打洼,覆蓋了日常使用的主要功能。
同時Beego和Go是不同于你曾使用過的動態(tài)語言炫惩,利用他們提供的功能是很簡單的阿浓。
不要忘記,這一系列的代碼在Github上筋蓖。你可以隨意的在線瀏覽或者復制,并驗證代碼粘咖。
你想到了什么?這足以去使用Go了嗎翰铡?在評論中分享你的想法唱捣。
鏈接


****http://www.goinggo.net/2013/06/installing-go-gocode-gdb-and-liteide.html

https://groups.google.com/forum/#!topic/golang-nuts/hbNCHMIA05g

http://stackoverflow.com/questions/10105935/how-to-convert-a-int-value-to-string-in-go

http://beego.me/

https://github.com/astaxie/beego

http://golang.org/pkg/text/template/

http://golang.org/doc/effective_go.html#if

http://blog.golang.org/go-maps-in-action

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末震缭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子党涕,更是在濱河造成了極大的恐慌巡社,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肥荔,死亡現(xiàn)場離奇詭異朝群,居然都是意外死亡姜胖,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門蚜锨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來慢蜓,“玉大人簇捍,你說我怎么就攤上這事锁施。” “怎么了由桌?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵帆谍,是天一觀的道長。 經(jīng)常有香客問我烈涮,道長窖剑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任讶舰,我火速辦了婚禮需了,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鹅颊。我一直安慰自己墓造,他們只是感情好,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布帝雇。 她就那樣靜靜地躺著摊求,像睡著了一般刘离。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上硫惕,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天恼除,我揣著相機與錄音曼氛,去河邊找鬼令野。 笑死,一個胖子當著我的面吹牛聊浅,可吹牛的內(nèi)容都是我干的现使。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼顽冶,長吁一口氣:“原來是場噩夢啊……” “哼售碳!你這毒婦竟也來了团滥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤拱燃,失蹤者是張志新(化名)和其女友劉穎力惯,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哮缺,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡甲喝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年埠胖,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片直撤。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡谋竖,死狀恐怖承匣,靈堂內(nèi)的尸體忽然破棺而出锤悄,到底是詐尸還是另有隱情,我是刑警寧澤宽闲,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布握牧,位于F島的核電站沿腰,受9級特大地震影響狈定,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纽什,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一芦缰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧浪规,春花似錦探孝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至讨永,卻和暖如春遇革,著一層夾襖步出監(jiān)牢的瞬間揭糕,已是汗流浹背锻霎。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工旋恼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人冰更。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓蜀细,卻偏偏與公主長得像,于是被迫代替她去往敵國和親谆刨。 傳聞我的和親對象是個殘疾皇子归斤,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Astronomygonova - A wrapper for libnova -- Celestial Mech...
    JumboWu閱讀 8,652評論 0 41
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理脏里,服務發(fā)現(xiàn),斷路器鸦难,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • 開始編寫Golang代碼 介紹 本文主要講述如何寫一個簡單的Go包和如何使用golang的工具员淫,如何獲取、編譯和安...
    uncle_charlie閱讀 1,587評論 0 0
  • 該資源的github地址:Qix 《Platform-native GUI library for Go》 介紹:...
    ty4z2008閱讀 4,861評論 5 121
  • 工作目錄 先來說說Golang的工作目錄,安裝好Golang后圣蝎,需要做的一件事情就是設置工作目錄,所有的項目牲证、工具...
    樂百川閱讀 3,103評論 0 6