Golang Web 框架 Revel

970 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天,点击查看活动详情

Revel 框架从2011年开始立项,比目前最流行的Web框架 Gin 还提前了三年;经过11年的技术积累融合了很多具有特色的Web技术,当然也正因为融入了诸多技术导致 Revel 框架相对而言较为冗杂,不过作为和 Golang 一起火起来的框架,Revel 仍然值得研究、学习。

Github 地址:github.com/revel/revel

官网地址:revel.github.io/

安装

启动一个 Revel 项目需要先安装一个 Revel 的命令行工具,使用以下命令安装后,通过 revel version 检测 Revel 是否成功安装

go install github.com/revel/cmd/revel@latest

快速开始

Revel 不像其他框架那种很好的支持可插拔,它给我们提供了约定的文件目录,清晰划分了控制器、视图文件、配置文件等,这也导致了我们启动项目时不能随心所欲;通过 revel new -a myapp 的方式创建一个 Revel 项目,这时会在当前目录下生成一个 myapp 文件夹,里面包含了web项目所需要的几大模块。

使用 revel run -a myapp 启动刚刚创建的项目,Revel 默认会在 9000 端口上提供服务,当能正常访问 http://localhost:9000/ 时,说明服务已成功启动

控制器

控制器这里可支持页面模板渲染、单独返回数据两个格式

模板渲染

  1. app/ontrollers 文件夹下定义控制器,需要继承 revel.Controller 这个控制器,这里我们添加一个 my.go 的文件,并设置他的结构体
type My struct {
   *revel.Controller
}
  1. 通过 c.Render() 方法指定控制器需要进行模板映射操作,c.Render 返回的结果需要使用 revel.Result 进行接收
func (c My) Index() revel.Result {
   return c.Render()
}
  1. conf/routes 中配置路由映射关系,如下所示:配置 /my 这个请求地址对应的控制器方法为 Index , 当通过 c.Render 进行映射时去 views 文件夹中找 my/Index.html 文件
GET     /my                                     My.Index

返回JSON格式数据

使用 c.RenderJSON() 方法可以返回一个 json 格式的数据,当然如果需要返回 XML 格式的数据可以选择使用 c.RenderXML() 方法

func (c My) Json() revel.Result {
   return c.RenderJSON(map[string]interface{}{
      "code": 200,
   })
}

静态资源

静态资源文件默认存放在 public 目录下,通过 /public/文件名 的方式可以在网页端加载对应的静态资源文件。

部署

项目的部署也是需要使用到 revel 的命令行工具,通过以下命令进行项目的打包:

revel build -a myapp

打包后会生成一个 target 文件夹,cd 到文件夹后,使用 ./run.sh 命令启动项目