Revel很好的利用了Go語言的goroutine,把每個request都分配到了goroutine裏。不用再寫一大堆的回調。若是你寫過nodejs的話就會深入的體會到callback hell是什麼樣子的。正是因爲Revel有了goroutine,Revel的性能也有了很大的提高。官網號稱請求的吞吐量是Rails的3到10倍。Revel的性能好,在開發方面也提供了很是全面的工具。經常使用的路由、模板、session、參數解析、等幾乎都有,甚至還提供了一個測試框架。而這些東西的開發都是模塊化的,也就是你能夠用本身的實現來代替上述提到的工具。好比,用你以爲合適的活着本身開發的router來代替默認的路由。css
這裏默認的你已經配置好了go env。在GOPATH所指定的目錄中的一個裏,運行命令go get github.com/revel/revel以後再運行
go get github.com/revel/cmd/revel。好的這個時候你會報錯說沒法import到websocket這個包。感謝偉大的全國防火牆,這部分的代碼被屏蔽了。雖然直接下載不行,可是代碼在github上仍是有的。因此,仍是能夠手動下載,以後配置上的。
html
這裏就須要知道go的另外一個很好的工具:http://gopm.io/。這是一個相似於nodejs的npm同樣的工具。他會根據版本號來下載對應的go包,而不是git、hg什麼的。你能夠下載這個工具,也能夠點download項進入下載頁面(這裏:http://gopm.io/download)。而後在import path裏輸入 golang.org/x/net,點擊下載。這個包就下載下來了。node
下載成功後,解壓下載包:git
很大的一包。最後就是咱們須要的websocket包。咱們準備把所有的這些包都放在須要的目錄下。這個時候回頭看看報錯內容:golang.org/x/net/websocket。可是在咱們的GOPATH/src目錄下是沒有這個目錄的。因此咱們須要建立websocket以前的所有目錄。以後把咱們上面解壓出來的所有的內容拷貝過去。這個問題就能夠解決了。最後,手動build一下revel。執行命令:go build github.com/revel/cmd/revel。以後就會在bin目錄下生成revel的二進制可執行文件。到這裏revel的安裝就算完成了。github
完成安裝後,運行revel命令會出現以下的提示:golang
localhost:golang user$ revel
~
~ revel! http:
//revel
.github.io
~
usage: revel
command
[arguments]
The commands are:
new create a skeleton Revel application
run run a Revel application
build build a Revel application (e.g.
for
deployment)
package package a Revel application (e.g.
for
deployment)
clean clean a Revel application's temp files
test
run all tests from the
command
-line
Use
"revel help [command]"
for
more
information.
運行revel new命令,revel會爲你生成一個默認的站點。命令以下:revel new github.com/first_test/app。應爲這個站點只是測試用的,我還要生成更多的其餘的站點,因此這裏的目錄略複雜一點。你能夠根據本身的須要決定目錄。大致的目錄結構式這樣的:web
運行命令revel run,例如:revel run github.com/first_test/app。這個時候一個站點已經運行起來了。在瀏覽器中輸入localhost:9000,回車。你會看到:npm
如今安裝和配置已經完成。瀏覽器
開發以前先認識一下revel爲咱們生成的目錄結構:websocket
app 項目根目錄 ├── app MVC框架目錄 │ ├── controllers 控制器目錄 │ ├── init.go │ ├── models 模型目錄 │ ├── routes │ ├── tmp │ └── views 視圖目錄 ├── conf │ ├── app.conf 配置文件 │ └── routes 路由文件 ├── messages 國際化目錄 ├── public 靜態文件目錄 └── tests
看起來好複雜的樣子。其實對於開發者來講最經常使用的並無那麼多。最簡單的public,這個目錄下面的是css、img和js文件存放的地方。咱們最經常使用到的就是app/conf/routes和app/app/controllers。
如今咱們在app/conf/routes這個文件中增長一個路由GET /blogs Blogs.Blogs
保存。在views目錄下建立blogs目錄並在其下建立blogs.html文件。這裏只是做爲示例使用,因此blogs.html文件是從index.html複製過來改了個名字的。
在controllers下建立咱們本身的controller:blogs.go文件,代碼以下:
"github.com/revel/revel"*
如今重啓服務,在瀏覽器中輸入localhost:9000/blogs就會出現開始的時候出現的index頁的內容。這裏出現index的內容,如前所述,是由於咱們直接把index頁的內容拷貝過來的。
因而可知,在revel上的開發通常是以下三步:
建立咱們所須要的路由。
建立相關的view試圖。
建立controller。
完成以上三步就已經添加了咱們本身須要的東西了。其餘的內容的使用能夠參考官網的文檔。
還有一點須要注意。先看下圖:
咱們在添加路由的文件中須要注意最後的一行。* /:controller/:action :controller.:action
*表示的是網絡請求的方法:GET、POST、DELETE等,後面的/:controller/:action是網絡請求的路徑,最後的:controller.:action是用戶定義的controller和在其中的action。因此按照這個路徑訪問的內容,若是controller和action都存在的話,是能夠訪問到的。也就是說,若是咱們沒有添加任何的路由,只用這個默認的生成的路由也是能夠訪問到blogs的。能夠試一下,在瀏覽器訪問localhost:9000/blogs/blogs。一樣能夠顯示咱們添加的blogs.html。這個路徑的第一個blogs就是controller的名字(當讓controller的首字母是會大寫的)。後面的一個blogs對應的就是controller的action也就是Blogs結構的Blogs方法。
controller的數據如何能傳給模板呢。修改blogs.html中的
It works!
爲
{{.greeting}}
修改Blogs的代碼:
greeting =
此次不用重啓服務了。對於路由、controller和view的修改是不用重啓服務的。Revel支持hot-reload。修改後的內容都會自動從新編譯。刷新瀏覽器。
開啓你的Revel之旅吧!