新聞中心
Revel 從Rails 和 Play! 中吸收了許多成熟的設(shè)計思想, 許多相同的思想被用到了框架的設(shè)計和接口中。

10年積累的成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先建設(shè)網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有王屋免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
Revel 通過簡單的約定來支持 MVC 設(shè)計模式,輕量、開發(fā)效率高。
MVC
- 模型 描述基本的數(shù)據(jù)對象,特定的查詢和更新邏輯。
- 視圖 一些模板,用于將數(shù)據(jù)呈現(xiàn)給用戶。
- 控制器 執(zhí)行用戶的請求,準(zhǔn)備用戶所需的數(shù)據(jù),并指定模板進(jìn)行渲染。
一些不錯的MVC結(jié)構(gòu)概述,像 Play! 框架 與Revel框架完全匹配。
請求的生命周期
下面是一個請求處理的基本流程:
概要:
- Revel 暴漏一個單獨(dú)的 http.Handler, 負(fù)責(zé)實(shí)例化控制器 (請求的上下文),并沿著過濾器鏈傳遞請求。
- Filters 鏈接到一個請求處理鏈,由水平相關(guān)的功能組成,比如請求記錄,cookie策略,授權(quán)等。大部分內(nèi)建功能都是由過濾器實(shí)現(xiàn)的。
- Actions 是處理用戶輸入和產(chǎn)生請求結(jié)果的的函數(shù)。
HTTP Handler
Revel 構(gòu)建自頂級 Go HTTP server, 他為每一個到來的請求創(chuàng)建一個 go-routine (輕量線程),用于處理并發(fā)。
Revel什么也不做,只是把請求交給過濾器鏈處理,完成之后,將結(jié)果寫到響應(yīng)中。
默認(rèn)情況下, Revel 處理程序注冊到 "/" 接受所有的請求連接。然而, 應(yīng)用程序可以自由的重寫此行為 – 例如, 可以使用現(xiàn)有的 http.Handlers 而不是Revel來重新實(shí)現(xiàn)此功能。具體請參考 FAQ。
過濾器
過濾器 實(shí)現(xiàn)了Revel的大部分請求處理功能,過濾器有一個簡單的易于嵌套的接口。
“過濾器鏈” 是一個函數(shù)數(shù)組, 每一個都會去執(zhí)行下一個,直到最后一個過濾器執(zhí)行了控制器方法。例如, 過濾器鏈中的第一個過濾器是 RouterFilter, 它決定哪個操作接受請求并保存到控制器。
總之, 過濾器和過濾器鏈就像機(jī)架一樣。
控制器和方法
每一個 HTTP 請求,執(zhí)行一個 action, 處理請求并寫入響應(yīng)。 相關(guān)的 actions 被分組到 controllers中. Controller 類型包含相關(guān)字段和方法,作為每個請求的上下文。
作為 HTTP 請求處理的一部分,Revel 實(shí)例化你的控制器,并設(shè)置嵌入revel.Controller的所有的屬性。 Revel 不在請求之間共享實(shí)例。
Controller 是直接 或 間接嵌入 *revel.Controller 的一個struct。
type AppController struct {
*revel.Controller
}Action 是 Controller 的方法。符合下面的條件:
- 名稱是導(dǎo)出的(首字母大寫)
- 返回 revel.Result 類型
例如:
func (c AppController) ShowLogin(username string) revel.Result {
..
return c.Render(username)
}程序調(diào)用 revel.Controller.Render 渲染一個模板, 傳遞給模板一個username參數(shù)。revel.Controller 有許多方法處理revel.Result, 程序也可以自己創(chuàng)建處理方法。
Results
Result 符合下面的接口:
type Result interface {
Apply(req *Request, resp *Response)
}通常, 什么也不響應(yīng),直到 action 和所有的過濾器返回。此時,Revel寫入響應(yīng)的headers和cookies。(例如設(shè)置會話cookie), 然后調(diào)用 Result.Apply 寫入實(shí)際響應(yīng)內(nèi)容。
標(biāo)題名稱:創(chuàng)新互聯(lián)Revel教程:Revel 概念
當(dāng)前鏈接:http://m.fisionsoft.com.cn/article/dpphpeo.html


咨詢
建站咨詢
