值得信赖的彩票平台
下載APP 編程獅,隨時隨地學編程
返回 首頁

Revel 教程

開始閱讀
手冊說明:

Go語言Web框架Revel介紹

Revel是一個Go語言的web框架,其具有熱編譯,高性能,無狀態,模塊化等特性,非常適合做web開發。這個框架源于java的 Play! Framework.清晰的MVC結構,是現在go語言Web框架中優秀的框架。

Revel框架特性

熱編譯

編輯, 保存, 和 刷新時,Revel自動編譯代碼和模板,如果代碼編譯錯誤,會給出一個 錯誤提示,同時捕捉 運行期錯誤。

全棧功能

Revel 支持: 路由, 參數解析, 驗證, session/flash, 模板, 緩存, 計劃任務, 測試, 國際化 等功能。

高性能

Revel 基于 Go HTTP server 構建。 這是techempower發布的 最新評測結果 。在各種不同的場景下進行了多達三到十次的請求負載測試。

框架設計

同步

Go HTTP server 對于每個請求都運行在 goroutine上。Write simple callback-free code without guilt。

無狀態

Revel 提供了保持Web層無狀態的可預知的擴展。例如,會話數據被存儲在用戶的cookie中,緩存由memcached集群提供支持。

模塊化

Revel框架由被稱為 過濾器 的中間件組成,它實現了幾乎所有的請求處理功能。 開發者可以自由地使用自定義的過濾器,比如如自定義的路由器,用以替換Revel默認的路由過濾器。

快速開始

1、安裝revel之前,先安裝go環境
2、安裝還需要hg和git支持
3、設置GOPATH,然后把revel下載并安裝到GOPATH內

mkdir ~/gocode
cd $GOPATH
go get github.com/robfig/revel

4.編譯revel命令行工具,revel自己封裝了go的命令行工具,創建revel項目、打包發布基本都用這個工具,執行下面的命令

go build -o bin/revel github.com/robfig/revel/cmd

5.可以將編譯出來的revel命令行工具加到$PATH變量中方便調用

export PATH="$PATH:$GOPATH/bin"

6.最后驗證revel是否可以工作了

$ revel help
~
~ revel! http://robfig.github.com/revel
~
usage: revel command [arguments]

The commands are:

    run         run a Revel application
    new         create a skeleton Revel application
    clean       clean a Revel application's temp files
    package     package a Revel application (e.g. for deployment)

Use "revel help [command]" for more information.

概要說明

本節簡要介紹框架的幾個主要組成部分:

路由
采用簡單的聲明性語法。反向路由類型安全。
控制器
組織端點到控制器。提供易用的數據綁定和表單驗證。
模板
使用 Go 模板支持大規模應用.
攔截器
在一個函數運行之前或之后被調用. 控制器的方法都可以被注冊攔截.
過濾器
通用的功能可以使用過濾器來實現.

Revel路由

路由采用聲明性語法. 所有的路由都定義在一個routes文件中。 使用簡單的語法匹配路由, 并從 URI 中提取參數到控制器中. 下面是帶注釋的示例:

# conf/routes
# 這個文件定義了所有的路由 (優先級按照先后順序)
GET    /login                Application.Login       # 匹配一個簡單的路由
GET    /hotels/              Hotels.Index            # 匹配一個帶或者不帶斜線的路由
GET    /hotels/:id           Hotels.Show             # 綁定到一個控制器參數
WS     /hotels/:id/feed      Hotels.Feed             # WebSockets
POST   /hotels/:id/:action   Hotels.:action          # 自由綁定到一個控制器的多個方法
GET    /public/*filepath     Static.Serve("public")  # 靜態文件服務
*      /:controller/:action  :controller.:action     # 自動捕捉所有動作,自動生成路由

反向路由以類型安全的方式生成. 例如下面的Save程序:

// 展示信息.
func (c Hotels) Show(id int) revel.Result {
	hotel := HotelById(id)
	return c.Render(hotel)
}

// 保存信息,并重定向到Hotels.Show.
func (c Hotels) Save(hotel Hotel) revel.Result {
	// validate and save hotel
	return c.Redirect(routes.Hotels.Show(hotel.Id))
}
目錄

概要

Revel 介紹
Revel 概念
Revel 項目結構

Revel 控制器

Revel 模板
Revel 攔截器
Revel 過濾器
Revel Websockets
Revel 控制器概要
Revel 消息處理
Revel 路由routes
Revel 緩存Cache
Revel 參數綁定
Revel 參數驗證
Revel Session / Flash
Revel Results

Revel 模塊

Revel 模塊概要
Revel 測試
Revel 計劃任務

Revel 操作

Revel 日志類型
Revel 版本控制
Revel 部署

Revel 參考資料

Revel 配置文件app.conf
Revel 命令行工具
Revel 常見問題

關閉

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; } 值得信赖的彩票平台

              大理市| 白水县| 同心县| 景东| 偃师市| 黄大仙区| 霍城县| 鲁甸县| 呼图壁县| 台东县| 巴里| 马关县| 潮安县| 华池县| 赞皇县| 元氏县| 石嘴山市| 高雄县|