代码改变世界

Go Web开发之Revel - 命令行工具

2013-01-10 10:09 by Danny.tian, 2374 阅读, 0 推荐, 收藏, 编辑
摘要:构建和运行为了使用Revel你必须构建命令行工具.从你的GOPATH根目录开始.$ go build -o bin/revel github.com/robfig/revel/cmd现在运行:$ bin/revel~~ 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 ... 阅读全文

Go Web开发之Revel - app.conf

2013-01-09 16:17 by Danny.tian, 1763 阅读, 0 推荐, 收藏, 编辑
摘要:应用程序配置文件被命名为app.conf,它使用goconfig的语法,它看起来有点像微软的INI文件。下面是一个例子文件:app.name=chatapp.secret=pJLzyoiDe17L36mytqC912j81PfTiolHm1veQK6Grn1En3YFdB5lvEHVTwFEaWvjhttp.addr=http.port=9000[dev]results.pretty=truewatch=truelog.trace.output = offlog.info.output = stderrlog.warn.output = stderrlog.error.output = s.. 阅读全文

Go Web开发之Revel - 部署

2013-01-09 16:17 by Danny.tian, 2077 阅读, 0 推荐, 收藏, 编辑
摘要:SCPRevel应用程序可以被部署到没有安装Go功能的机器上. 命令行工具提供了package命令,它可以编译和打包应用程序并附带一个运行它的脚本.一个典型的部署看起来像下面这样:# Run and test my app.$ revel run import/path/to/app.. test app ..# Package it up.$ revel package import/path/to/appYour archive is ready: app.zip# Copy to the target machine.$ scp app.zip target:/srv/# Run it 阅读全文

Go Web开发之Revel - 日志

2013-01-09 16:17 by Danny.tian, 2243 阅读, 1 推荐, 收藏, 编辑
摘要:Revel提供4个日志记录器TRACE - 只有debug信息.INFO - 信息报告.WARN - 一些意外的但无害的.ERROR - 错误信息,不需要看一看了.日志可以在app.conf中配置. 下面是一个例子:app.name = sampleapp[dev]log.trace.output = stdoutlog.info.output = stdoutlog.warn.output = stderrlog.error.output = stderrlog.trace.prefix = "TRACE "log.info.prefix = "INFO &qu 阅读全文

Go Web开发之Revel - 测试

2013-01-09 09:44 by Danny.tian, 2445 阅读, 3 推荐, 收藏, 编辑
摘要:Revel提供了一个测试框架,这使得在应用程序中写和运行测试函数变得很容易.skeleton应用程序带有一个简单的测试来帮助我们测试.概要测试保存在tests目录corp/myapp app/ conf/ public/ tests/ <----一个简单的测试看起来像下面这样:type ApplicationTest struct { rev.TestSuite}func (t ApplicationTest) Before() { println("Set up")}func (t ApplicationTest) TestThatIndexPageWo... 阅读全文

Go Web开发之Revel - Websockets

2013-01-08 17:31 by Danny.tian, 1552 阅读, 0 推荐, 收藏, 编辑
摘要:Revel 支持Websockets.处理一个Websocket连接:使用WS方法添加一个路由.添加一个action接受一个*websocket.Conn参数.例如添加如下代码到你的routes文件:WS /app/feed Application.Feed然后写一个action就下下面:import "code.google.com/p/go.net/websocket"func (c Application) Feed(user string, ws *websocket.Conn) rev.Result { ...}至此结束。 阅读全文

Go Web开发之Revel - 模块

2013-01-08 17:31 by Danny.tian, 1689 阅读, 0 推荐, 收藏, 编辑
摘要:模块是可以被插入到应用程序的包. 他们允许在多个Revel应用或第三方程序中共享controller、view、资源文件和其他代码模块应该有相同的布局来作为一个Revel应用程序. 主应用程序将把模块按照下面的方式合并:任何在module/app/views中的模板将被添加到模板加载器的搜索路径任何在module/app/controllers中的controller将被视为他们在你的应用程序中通过一个路由的形式 staticDir:modulename:public,资源文件就可以使用了开启一个module为了添加一个模块到你的应用程序,添加如下一行代码到app.conf:module.my 阅读全文

Go Web开发之Revel - 插件

2013-01-08 13:19 by Danny.tian, 1964 阅读, 0 推荐, 收藏, 编辑
摘要:插件被注册到应用程序的hook上面和请求生命周期事件离.一个插件就像下面的接口 (每一个事件都将被通知):type Plugin interface { // Server启动时被call (每一次代码重新加载). OnAppStart() // 路由器完成配置后被call. OnRoutesLoaded(router *Router) // 每一次request之前被call. BeforeRequest(c *Controller) // 每一次request之后被call.(除了panics) AfterRequest(c *Control... 阅读全文

Run Revel Apps on Heroku

2013-01-07 15:55 by Danny.tian, 388 阅读, 0 推荐, 收藏, 编辑
摘要:UPDATE: There have been some updates to my Revel Heroku Buildpack that make it work better and with newer versions of Revel.Check out the details.Revelis a Play-like web framework for Go. I’m new to the Go programming language but I’ve heard good things. So I thought I’d take Revel for a spin and ge 阅读全文

Go Web开发之Revel - 拦截器

2013-01-07 15:18 by Danny.tian, 3337 阅读, 1 推荐, 收藏, 编辑
摘要:一个拦截器是一个框架在调用action方法前或后调用的函数. 它允许一种AOP的形式, 它经常被用于做下面几种事情:Request loggingError handlingStats keeping在Revel里, 一个拦截器能接受两种形式:1. 函数拦截器: 一个函数满足InterceptorFunc接口没有访问特定的应用程序Controller被调用在应用程序中可以应用于任意或全部Controller2. 方法拦截器:一个controller的方法接受没有参数和rev.Result的返回值可以只拦截受约束的Controller可以修改被调用的controller作为想得到的拦截器按照被添 阅读全文