作者:手机用户2602938293 | 来源:互联网 | 2023-09-25 15:25
Revel是一个go语言写的web框架,这个框架源于java的Play!Framework.清晰的MVC结构,是现在go语言Web框架中优秀的框架。Revel的功能有1.热部署Re
Revel是一个go语言写的web框架,这个框架源于java的 Play! Framework.清晰的MVC结构,是现在go语言Web框架中优秀的框架。
Revel的功能有
1.热部署
Revel会自动编译你的go代码和templates模板文件,这个类似jsp功能。
2.简单的选择
Revel提供了一个工具包,用户日常的网络维护。也可以放弃这个工具包,直接访问底层应用。
3.轻量级线程
Revel建立在Go Http Server之上,使用Goroutine来处理请求。
Quick Start
安装revel之前,先安装go环境
安装还需要hg和git支持
设置GOPATH,然后把revel安装到GOPATH内
go get github.com/robfig/revel
编译revel
go build -o bin/revel github.com/robfig/revel/cmd
运行revel
bin/revel run github.com/robfig/revel/samples/chat
这里运行了一个revel的应用chat
Revel应用结构
3 |
/controllers #app下用于存放controllers的目录 |
6 |
/controllerName #与controller名对应目录,其下存放模板文件 |
9 |
/public #静态文件,css,js,图片 |
Revel的MVC实现
Model
model就是一个普通结构体,存放属性
View
Revel的View通过 Go Templates来实现
模板存放于views目录下,命名方式是ControllerName/ActionName.html
1 |
{{/* app/views/Application/Register.html */}} |
3 |
{{template "header.html" .}} |
7 |
{{with $field := field "user.Username" .}} |
15 |
{{/* other fields */}} |
22 |
{{template "footer.html" .}} |
Controller
Controller:负责数据的绑定,验证,COOKIE和session的处理,业务处理及返回
1 |
/ / app / controllers / app.go |
2 |
type Application struct { |
3 |
* revel.Controller / / 创建一个Application的Controller,每一个Controller必须依赖 * revel.Controller,在go中,相当于继承了 * revel.Controller |
6 |
func (c Application) Register() revel.Result { / / 定义一个Controller的Action |
11 |
func (c Application) SaveUser(user models.User, verifyPassword string) revel.Result { |
12 |
c.Validation.Required(verifyPassword) / / 通过Controller内部工具来验证验证 |
13 |
c.Validation.Required(verifyPassword = = user.Password) |
14 |
Message( "Password does not match" ) |
15 |
user.Validate(c.Validation) |
17 |
if c.Validation.HasErrors() { |
20 |
return c.Redirect(Application.Register) |
23 |
user.HashedPassword, _ = bcrypt.GenerateFromPassword( |
24 |
[]byte(user.Password), bcrypt.DefaultCost) |
25 |
err : = c.Txn.Insert(&user) |
30 |
c.Session[ "user" ] = user.Username / / Session处理 |
31 |
c.Flash.Success( "Welcome, " + user.Name) |
32 |
return c.Redirect(Hotels.Index) / / 从定向到另外一个Action |
Routing
在mvc中还有重要一点就是routing,Revel如何通过连接来定位Action呢,那需要Routing。
在conf下有一个routes文件用来配置,格式如下
2 |
GET /login Application.Login # A simple path |
3 |
GET /hotels/? Hotels.Index # Match /hotels and /hotels/ (optional trailing slash) |
4 |
GET /hotels/{id} Hotels.Show # Extract a URI argument (matching /[^/]+/) |
5 |
POST /hotels/{<[0-9]+>id} Hotels.Save # URI arg with custom regex |
6 |
WS /hotels/{id}/feed Hotels.Feed # WebSockets. |
7 |
POST /hotels/{id}/{action} Hotels.{action} # Automatically route some actions. |
8 |
GET /public/ staticDir:public # Map /app/public resources under /public/... |
9 |
* /{controller}/{action} {controller}.{action} # Catch all; Automatic URL generation |
支持Http的方法及WobSockets
对于Revel简单介绍到这里了
本篇来源:
http://blog.gcove.net/go%E8%AF%AD%E8%A8%80web%E6%A1%86%E6%9E%B6revel%E4%BB%8B%E7%BB%8D.html