使用Revel(go)开发网站

Revel很好的利用了Go语言的goroutine,把每个request都分配到了goroutine里。不用再写一大堆的回调。若是你写过nodejs的话就会深入的体会到callback hell是什么样子的。正是因为Revel有了goroutine,Revel的性能也有了很大的提高。官网号称请求的吞吐量是Rails的3到10倍。Revel的性能好,在开发方面也提供了很是全面的工具。经常使用的路由、模板、session、参数解析、等几乎都有,甚至还提供了一个测试框架。而这些东西的开发都是模块化的,也就是你能够用本身的实现来代替上述提到的工具。好比,用你以为合适的活着本身开发的router来代替默认的路由。css

这里默认的你已经配置好了go env。在GOPATH所指定的目录中的一个里,运行命令go get github.com/revel/revel以后再运行go get github.com/revel/cmd/revel。好的这个时候你会报错说没法import到websocket这个包。感谢伟大的全国防火墙,这部分的代码被屏蔽了。虽然直接下载不行,可是代码在github上仍是有的。因此,仍是能够手动下载,以后配置上的。html

这里就须要知道go的另外一个很好的工具:http://gopm.io/。这是一个相似于nodejs的npm同样的工具。他会根据版本号来下载对应的go包,而不是git、hg什么的。你能够下载这个工具,也能够点download项进入下载页面(这里:http://gopm.io/download)。而后在import path里输入 golang.org/x/net,点击下载。这个包就下载下来了。node

下载成功后,解压下载包:git

很大的一包。最后就是咱们须要的websocket包。咱们准备把所有的这些包都放在须要的目录下。这个时候回头看看报错内容:golang.org/x/net/websocket。可是在咱们的GOPATH/src目录下是没有这个目录的。因此咱们须要建立websocket以前的所有目录。以后把咱们上面解压出来的所有的内容拷贝过去。这个问题就能够解决了。最后,手动build一下revel。执行命令:go build github.com/revel/cmd/revel。以后就会在bin目录下生成revel的二进制可执行文件。到这里revel的安装就算完成了。github

完成安装后,运行revel命令会出现以下的提示:golang

localhost:golang user$ revel
~
~ revel! http: //revel .github.io
~
usage: revel command [arguments]
The commands are:
new create a skeleton Revel application
run run a Revel application
build build a Revel application (e.g. for deployment)
package package a Revel application (e.g. for deployment)
clean clean a Revel application's temp files
test run all tests from the command -line
Use "revel help [command]" for more information.

运行revel new命令,revel会为你生成一个默认的站点。命令以下:revel new github.com/first_test/app。应为这个站点只是测试用的,我还要生成更多的其余的站点,因此这里的目录略复杂一点。你能够根据本身的须要决定目录。大致的目录结构式这样的:web

运行命令revel run,例如:revel run github.com/first_test/app。这个时候一个站点已经运行起来了。在浏览器中输入localhost:9000,回车。你会看到:npm

如今安装和配置已经完成。浏览器

开发以前先认识一下revel为咱们生成的目录结构:websocket

 app 项目根目录 ├── app MVC框架目录 │ ├── controllers 控制器目录 │ ├── init.go │ ├── models 模型目录 │ ├── routes │ ├── tmp │ └── views 视图目录 ├── conf │ ├── app.conf 配置文件 │ └── routes 路由文件 ├── messages 国际化目录 ├── public 静态文件目录 └── tests

看起来好复杂的样子。其实对于开发者来讲最经常使用的并无那么多。最简单的public,这个目录下面的是css、img和js文件存放的地方。咱们最经常使用到的就是app/conf/routesapp/app/controllers

如今咱们在app/conf/routes这个文件中增长一个路由GET /blogs Blogs.Blogs

保存。在views目录下建立blogs目录并在其下建立blogs.html文件。这里只是做为示例使用,因此blogs.html文件是从index.html复制过来改了个名字的。

在controllers下建立咱们本身的controller:blogs.go文件,代码以下:

"github.com/revel/revel"*

如今重启服务,在浏览器中输入localhost:9000/blogs就会出现开始的时候出现的index页的内容。这里出现index的内容,如前所述,是由于咱们直接把index页的内容拷贝过来的。

因而可知,在revel上的开发通常是以下三步:

  1. 建立咱们所须要的路由。

  2. 建立相关的view试图。

  3. 建立controller。

完成以上三步就已经添加了咱们本身须要的东西了。其余的内容的使用能够参考官网的文档

还有一点须要注意。先看下图:

咱们在添加路由的文件中须要注意最后的一行。* /:controller/:action :controller.:action

*表示的是网络请求的方法:GET、POST、DELETE等,后面的/:controller/:action是网络请求的路径,最后的:controller.:action是用户定义的controller和在其中的action。因此按照这个路径访问的内容,若是controller和action都存在的话,是能够访问到的。也就是说,若是咱们没有添加任何的路由,只用这个默认的生成的路由也是能够访问到blogs的。能够试一下,在浏览器访问localhost:9000/blogs/blogs。一样能够显示咱们添加的blogs.html。这个路径的第一个blogs就是controller的名字(当让controller的首字母是会大写的)。后面的一个blogs对应的就是controller的action也就是Blogs结构的Blogs方法。

controller的数据如何能传给模板呢。修改blogs.html中的

It works!

{{.greeting}}

修改Blogs的代码:

 greeting =

此次不用重启服务了。对于路由、controller和view的修改是不用重启服务的。Revel支持hot-reload。修改后的内容都会自动从新编译。刷新浏览器。

开启你的Revel之旅吧!

相关文章
相关标签/搜索