下载APP w3cschool-编程狮
返回 首页

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))
}
阅读全文
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

概要

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; }