Revel 从Rails 和 Play! 中吸收了许多成熟的设计思想, 许多相同的思想被用到了框架的设计和接口中。
10年积累的成都网站建设、网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先建设网站后付款的网站建设流程,更有王屋免费网站建设让你可以放心的选择与我们合作。
Revel 通过简单的约定来支持 MVC 设计模式,轻量、开发效率高。
一些不错的MVC结构概述,像 Play! 框架 与Revel框架完全匹配。
下面是一个请求处理的基本流程:
概要:
Revel 构建自顶级 Go HTTP server, 他为每一个到来的请求创建一个 go-routine (轻量线程),用于处理并发。
Revel什么也不做,只是把请求交给过滤器链处理,完成之后,将结果写到响应中。
默认情况下, Revel 处理程序注册到 "/"
接受所有的请求连接。然而, 应用程序可以自由的重写此行为 – 例如, 可以使用现有的 http.Handlers 而不是Revel来重新实现此功能。具体请参考 FAQ。
过滤器 实现了Revel的大部分请求处理功能,过滤器有一个简单的易于嵌套的接口。
“过滤器链” 是一个函数数组, 每一个都会去执行下一个,直到最后一个过滤器执行了控制器方法。例如, 过滤器链中的第一个过滤器是 RouterFilter
, 它决定哪个操作接受请求并保存到控制器。
总之, 过滤器和过滤器链就像机架一样。
每一个 HTTP 请求,执行一个 action, 处理请求并写入响应。 相关的 actions 被分组到 controllers中. Controller 类型包含相关字段和方法,作为每个请求的上下文。
作为 HTTP 请求处理的一部分,Revel 实例化你的控制器,并设置嵌入revel.Controller
的所有的属性。 Revel 不在请求之间共享实例。
Controller 是直接 或 间接嵌入 *revel.Controller
的一个struct。
type AppController struct {
*revel.Controller
}
Action 是 Controller 的方法。符合下面的条件:
例如:
func (c AppController) ShowLogin(username string) revel.Result {
..
return c.Render(username)
}
程序调用 revel.Controller.Render
渲染一个模板, 传递给模板一个username参数。revel.Controller 有许多方法处理revel.Result, 程序也可以自己创建处理方法。
Result 符合下面的接口:
type Result interface {
Apply(req *Request, resp *Response)
}
通常, 什么也不响应,直到 action 和所有的过滤器返回。此时,Revel写入响应的headers和cookies。(例如设置会话cookie), 然后调用 Result.Apply
写入实际响应内容。
分享标题:创新互联Revel教程:Revel 概念
链接地址:http://www.shufengxianlan.com/qtweb/news21/119471.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联