使用Revel(go)开发网站

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

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

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

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

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

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

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。应为这个站点只是测试用的,我还要生成更多的其他的站点,所以这里的目录略复杂一点。你可以根据自己的需要决定目录。大体的目录结构式这样的:

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

现在安装和配置已经完成。

开发之前先认识一下revel为我们生成的目录结构:

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文件,代码如下:

package controllers

import "github.com/revel/revel"

type Blogs struct {
    *revel.Controller
}

func (c Blogs) Blogs() revel.Result {
    return c.Render()
}

现在重启服务,在浏览器中输入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中的

<h1>It works!</h1>

<h1>{{.greeting}}</h1>

修改Blogs的代码:

func (c Blogs) Blogs() revel.Result {
    var greeting = "你好REVEL!"
    return c.Render(greeting)
}

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

开启你的Revel之旅吧!

时间: 2024-10-23 05:42:47

使用Revel(go)开发网站的相关文章

用 Umbraco 开发网站[2]:使用 Umbraco创建一个基本站点(上)

经过前面的准备,我们已经充分具备了开发一个 Umbraco 站点的条件,Let's go on~~~ Umbraco 官网提供了一个学习的静态模板资源包,蛮多前往的人还真不容易找到,地址在下面: https://github.com/verekia/initializr-template/archive/master.zip 一.创建第一个[Document Type](文档类型) 1.制作任何站点的第1步都是创建一个“文档类型”.文档类型是数据的容器,在这里您可以添加编辑数据字段/属性,用户可

思考:用开发移动app的观念来开发网站

首先祝大家新年快乐.万事如意. 开发网站程序也有一些年头了,从最初的静态HTML+ JS,到后来的WebForm,然后过渡到现在的MVC. 由于最近做一些技术调研,也接触了很多移动开发,iOS和Android的东西也知道点,会做一些简单的app. 做移动app做多了,再回头看网站开发,我开始怀疑,我们到底需不需要ASP.NET MVC这样的框架? 网站的本质就是 HTML + CSS +JS + HTTP(TCP/IP)协议 + 可以响应HTTP协议的服务器. 移动app的本质是 移动UI +

用 Umbraco 开发网站[1]:下载安装与初探

一.Umbraco 下载方式 学习如何使用软件,首先要从有软件开始.Umbraco 的下载方式有四种: 1.直接下载(包括下载发行包.源代码):前往官网(https://our.umbraco.org/contribute/releases/)或者 github(https://github.com/umbraco/Umbraco-CMS) 下载发行包或者源代码: 2.NuGet下载:使用 VS 自带的 NuGet 插件,搜索合适版本的 UmbracoCms(https://www.nuget.

2016年1月25日 《1024伐木累》-小白篇之开发网站,三天!(中篇-2奇怪的IE)-总章节十一

往期回顾:  老王的“先见之明”,解决了困扰耗仔三人的大难题.顺利安装完开发工具,大家投入紧张的工作.航空部领导的突然闯入,IE不兼容,页面错乱,摆在三人面前的形势依然严峻.第一次见这阵仗的耗仔,又会怎么办? 2016-02-01<1024伐木累>-小白篇之开发网站,三天!(中篇-2奇怪的IE) # region 总章节11 IE出了问题,来不及找原因,屋内就涌进一堆领导,你一言我一语,围着三人叽叽喳喳说个不停. 此时的耗仔头都大了,这到底是要干啥,刚开始没几个小时,再这么折腾下去,还怎么工作

自己开发网站全文检索系统

本文是我写的一篇数据库相关的作业Report,在这里贴出来 1. 概述 1.1. 问题提出 假如你拥有一个庞大的网站,内容又多,那么来访者往往很难找到自己所需要的东东,这时候你就需要一个站内搜索来帮助来访者更快的找到索要的资料了! 1.2. 解决的办法 搭建自己的全文检索系统.1.2.1. 什么是全文检索全文检索是一种将文件中所有文本与检索项匹配的文字资料检索方法.全文检索系统是按照全文检索理论建立起来的用于提供全文检索服务的软件系统.目前最大的搜索引擎Google和Baidu使用的就是全文检索

jsp+mysql开发网站留言板源代码下载

原文:jsp+mysql开发网站留言板源代码下载 源代码下载地址:http://www.zuidaima.com/share/1550463448304640.htm jsp+mysql开发网站留言板源代码下载

《1024伐木累》-小白篇之开发网站,三天!(结束篇)-总章节十三

往期回顾:  忙到深夜,终于可以休息,三人打闹了一会,就各自去洗漱.刚洗完澡心情有些压抑的耗仔开始向光大人请教研发人员的“升级”之路,光大人耐心给耗仔上了一课.睡眼朦胧中吴博士来敲门,新的一天又要开始了., 2016-02-22<1024伐木累>-小白篇之开发网站,三天!(结束篇) # region 总章节13 吴博士带的早餐太丰富了,耗仔吃的有点多,一路打着饱嗝就到了航空部.大门口,闫参谋来回踱着方步,焦急的等待着.一看到几人,赶忙迎了上去,“你们终于来了,快上去吧!” 没有寒暄,一行人直奔

《1024伐木累》-小白篇之开发网站,三天!(前篇)-总章节八

往期回顾: 空军k所,老王留下迷惘的耗仔独自与吴博士沟通需求,回到公司,老王又指定耗仔为新项目负责人,在退居"二线"月侠的热心帮助下,耗仔重新调整工作计划,新来的明儿也即将加入,一切似乎都在顺风顺水的发展着,下班时,一通电话打破了平静局面,光大人,月侠,耗仔要火速赶往空军某部,三天时间开发航空某部网站.   小序 人生! 若白驹过隙,匆匆而已, 光阴似锦,无法倒流, 青春宝贵,奋斗无休, 北漂! 有激情,有迷茫,有机遇,有挑战, 不拼搏又何必留恋? 年轻,真好! 引子 “走,走,快!吴

该不该用bootstrap来开发 网站?

一直想做一个自己的网站,文章类型的网站.一心想用bootstrap来制作. 不过筹划了将近半年,工作一直都很忙,每天加班到七八点,还是没有开始制作. 因为不会图片不会美工,所以,每次都是开始动手就感觉挤牙膏,做模板非常吃力.即使做出来了,网站根本就不像一个网站! 非IT行业人来说就是太丑了,一张图片都没有,根本就不像一个网站 国人的审美习惯跟bootstrap冲突 国内的大部分网站基本上没有一个是用bootstrap来制作的.而且bootstrap制作出来的网站界面都非常简洁,完全不符合国人的审

谈谈程序员自己开发网站的那些事儿

我的博客原文地址http://blog.cxycs.com/article/74 今天中午和一个技术leader聊起建站的事儿,当我提到我在自己开发网站的时候,他突然打断我,说我犯了一个技术人员的通病,那就是总希望自己来开发.他说这样不对,开发浪费了大量的时间,还不如找个开源网站架设好好经营,先有流量了再改版.他还提到,那些经营很好的网站背后往往反而都不是技术人员,那些界面一般甚至很难看的网站通常也盈利不错. 我不得不承认他有些事说对了,尤其在开发浪费了大量时间这件事上.我 一直致力于想自己开发