创新互联Revel教程:Revel 概念

Revel 从Rails 和 Play! 中吸收了许多成熟的设计思想, 许多相同的思想被用到了框架的设计和接口中。

10年积累的成都网站建设、网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先建设网站后付款的网站建设流程,更有王屋免费网站建设让你可以放心的选择与我们合作。

Revel 通过简单的约定来支持 MVC 设计模式,轻量、开发效率高。

MVC

  • 模型 描述基本的数据对象,特定的查询和更新逻辑。
  • 视图 一些模板,用于将数据呈现给用户。
  • 控制器 执行用户的请求,准备用户所需的数据,并指定模板进行渲染。

一些不错的MVC结构概述,像 Play! 框架 与Revel框架完全匹配。

请求的生命周期

下面是一个请求处理的基本流程:

概要:

  • Revel 暴漏一个单独的 http.Handler, 负责实例化控制器 (请求的上下文),并沿着过滤器链传递请求。
  • Filters 链接到一个请求处理链,由水平相关的功能组成,比如请求记录,cookie策略,授权等。大部分内建功能都是由过滤器实现的。
  • Actions 是处理用户输入和产生请求结果的的函数。

HTTP Handler

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 的方法。符合下面的条件:

  • 名称是导出的(首字母大写)
  • 返回 revel.Result 类型

例如:

func (c AppController) ShowLogin(username string) revel.Result {
    ..
    return c.Render(username)
}

程序调用 revel.Controller.Render 渲染一个模板, 传递给模板一个username参数。revel.Controller 有许多方法处理revel.Result, 程序也可以自己创建处理方法。

Results

Result 符合下面的接口:

type Result interface {
    Apply(req *Request, resp *Response)
}

通常, 什么也不响应,直到 action 和所有的过滤器返回。此时,Revel写入响应的headers和cookies。(例如设置会话cookie), 然后调用 Result.Apply 写入实际响应内容。

分享标题:创新互联Revel教程:Revel 概念
链接地址:http://www.hantingmc.com/qtweb/news21/119471.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联