`
lavafree
  • 浏览: 539694 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Go语言Web框架Revel介绍

    博客分类:
  • go
阅读更多

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应用结构

1 appname                        #应用名称
2     /app                    #app目录
3         /controllers        #app下用于存放controllers的目录
4         /models                #存放model的目录
5         /views                #存放模板目录
6             /controllerName    #与controller名对应目录,其下存放模板文件
7             ...
8     /conf                    #应用配置目录
9     /public                    #静态文件,css,js,图片
10     /tests                    #测试代码

Revel的MVC实现

Model

model就是一个普通结构体,存放属性

View

Revel的View通过 Go Templates来实现
模板存放于views目录下,命名方式是ControllerName/ActionName.html

1 {{/* app/views/Application/Register.html */}}
2  
3 {{template "header.html" .}}
4  
5 <h1>Register:</h1>
6 <form action="/register" method="POST">
7   {{with $field := field "user.Username" .}}
8     <p class="{{$field.ErrorClass}}">
9       <strong>Username:</strong>
10       <input type="text" name="{{$field.Name}}" size="16" value="{{$field.Flash}}"> *
11       <span class="error">{{$field.Error}}</span>
12     </p>
13   {{end}}
14  
15   {{/* other fields */}}
16  
17   <p class="buttons">
18     <input type="submit" value="Register"> <a href="/">Cancel</a>
19   </p>
20 </form>
21  
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
4 }
5  
6 func (c Application) Register() revel.Result {//定义一个Controller的Action
7     title := "Register"
8     return c.Render(title)
9 }
10  
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)
16  
17     if c.Validation.HasErrors() {
18         c.Validation.Keep()
19         c.FlashParams()
20         return c.Redirect(Application.Register)
21     }
22  
23     user.HashedPassword, _ = bcrypt.GenerateFromPassword(
24         []byte(user.Password), bcrypt.DefaultCost)
25     err := c.Txn.Insert(&user)
26     if err != nil {
27         panic(err)
28     }
29  
30     c.Session["user"= user.Username       //Session处理
31     c.Flash.Success("Welcome, " + user.Name)
32     return c.Redirect(Hotels.Index)         //从定向到另外一个Action
33 }

Routing

在mvc中还有重要一点就是routing,Revel如何通过连接来定位Action呢,那需要Routing。
在conf下有一个routes文件用来配置,格式如下

1 方法    请求路径                对应Action
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

分享到:
评论

相关推荐

    Go的全堆栈Web框架 Revel.zip

    Go语言的全堆栈Web框架Revel是一个高效且强大的工具,用于快速开发现代Web应用程序。Revel借鉴了Java的Play Framework的设计理念,旨在提供简洁、直观的API,使得开发者能够专注于业务逻辑,而不是底层实现细节。 ...

    Go-revel一个高生产力全栈的Go语言Web开发框架

    Go-revel是一个旨在提高开发效率、提供全栈功能的Go语言Web开发框架。它为Go程序员提供了一种简洁、高效的方式来构建健壮的Web应用程序。本文将深入探讨Revel框架的核心特性和使用方法,帮助你更好地理解和应用这个...

    学习go框架Revel

    ### 学习Go框架Revel #### 一、Revel框架简介 Revel是一个高效的Go语言Web开发框架,它的设计理念很大程度上受到了Play! Framework的影响。Revel提供了许多现代Web开发所需的特性,使得开发者能够快速地构建高性能...

    一步一步学习Revel Web开源框架v6

    Revel是一个基于Go语言的高效Web开发框架,其设计灵感来源于PlayFramework。它通过一套约定俗成的目录结构、文件命名和处理流程,简化了Web应用程序的开发和部署。Revel以模块化的方式组织代码,支持插件、模板渲染...

    基于GO语言Revel框架和mgo的博客内含源码以及说明书可以自己运行复现.zip

    2. **Revel框架**:Revel是Go语言的一个Web应用框架,它提供了MVC(模型-视图-控制器)架构模式,简化了Web应用的开发。Revel支持路由、依赖注入、中间件、热重载等特性,使得开发者能够快速构建应用程序。在本博客...

    Go-在Github中stars数最多的GoWeb框架集合

    Go语言,又称为Golang,是由Google开发的一种静态类型的、编译式的、并发型且具有垃圾回收功能的编程语言。其简洁的语法和强大的性能使得它在开发Web应用时受到广泛欢迎。本篇文章将深入探讨在Github上stars数最多的...

    一个基于Go的web框架.zip

    本资源“一个基于Go的web框架.zip”显然提供了一个使用Go语言编写的Web框架,这为我们提供了构建高效、可扩展的Web应用程序的基础。让我们深入探讨一下Go语言和Web框架的相关知识点。 Go,也被称为Golang,是Google...

    一步一步学习Revel Web开源框架

    Revel是一个高效的Go语言Web开发框架,它的设计灵感来源于Play! Framework,它通过模仿Play! Framework的功能特点,为Go语言提供了一个高效的Web开发解决方案。Revel以MVC架构为基础,提供了路由、参数绑定、模板...

    一个适用于 Go 语言的高生产力全栈 Web 框架 .zip

    Revel 框架 一个高生产力、全栈的Go 语言Web 框架。当前版本1.1.0(2022-04-11)支持 go.mod 包管理快速入门安装 Revelgo install github.com/revel/cmd/revel@latest创建并运行您的应用程序revel new -a my-app -r...

    一步一步学习Revel Web开源框架.pdf

    Revel是一个高效的Go语言Web开发框架,它的设计理念很大程度上受到了Play! Framework的影响。Revel的主要特点在于其高性能和简洁性,使得开发者能够快速地构建出稳定可靠的Web应用程序。 #### 二、安装与配置 1. *...

    一个高生产力的 Go 语言 Web 框架 gorevel.zip

    关于gorevelGo 语言 Revel 框架学习— Revel中文社区 源码,本站使用Revel、xorm构建。配置文件在 src/gorevel/conf 目录中,主配置app.conf,自定义配置my.conf (数据库、邮件)。默认的数据库是mysql,数据库名...

    Revel的工具及框架

    Revel是一个用Go语言编写的高性能Web应用框架,它的设计灵感来源于Ruby on Rails,旨在提供一个简洁、高效、可扩展的开发环境。Revel的主要目标是简化Go Web开发,让开发者能够快速构建复杂的Web应用程序。 在Revel...

    使用Golang的Revel框架和MongoDB实现的简易博客系统,前端使用AmazeUI。.zip

    在这个项目中,开发者选择使用Revel作为后端开发的主要工具,因为它是一个快速、功能丰富的全栈式Web框架,适合构建高效的Go应用程序。而MongoDB则作为数据存储解决方案,它是一个流行的NoSQL数据库,特别适合处理非...

    开源项目-revel-revel.zip

    Revel 是一个高性能的、基于Go语言的Web应用框架,它的设计灵感来源于Ruby on Rails。Revel 提供了一种简洁的、全栈式的方法来构建Web应用,使得开发者可以更专注于业务逻辑,而不是底层的HTTP处理和路由设置。在...

    mediom, Forum web application, an example for from Rails to Go (Revel).zip

    "mediom, Forum web application, an example for from Rails to Go (Revel).zip" 这个压缩包文件是一个关于将Web应用从Ruby on Rails框架迁移到Go语言(使用Revel框架)的示例项目。这个名为"mediom"的论坛应用提供...

    golang-revel-tutorial:本教程面向具有任何类 C 语言、MVC 概念和 Web 开发基础知识的程序员。 此应用程序的目的是以易于理解的方式向目标受众展示 Revel Web 框架的主要功能

    演示 Go 和 Revel 的教程 ... 此应用程序的目的是以易于理解的方式向目标受众展示 Revel Web 框架的主要功能。 阅读教程 此应用程序在文件“Lets_Go_Revel_Written_Tutorial_Holdorf.pdf”中进行了说明

    开源项目-mingrammer-go-web-framework-stars.zip

    1. **Go语言Web框架**:Go(Golang)是一种静态类型的、编译型的、并发型的、垃圾回收的编程语言,特别适合构建高性能的网络服务。常见的Go Web框架有Gin、Beego、Echo、 Revel等,它们提供了一套方便快捷的方式来...

    Go-Cali这是一个基于 Revel 开发的在线图书馆

    Revel是Go语言中的一个高性能Web框架,它为开发者提供了类似于Rails或Django的开发体验,使得构建Web应用更为高效。通过Go-Cali,用户可以方便地管理和浏览他们的书籍收藏,同时获取来自豆瓣(douban.com)的额外书籍...

    开源项目-smallnest-go-web-framework-benchmark.zip

    smallnest-go-web-framework-benchmark项目就采用了这种方式,对Go语言中的Web框架进行了一系列的性能测试,包括请求处理速度、内存占用等关键指标。 该项目包含的框架有Gin、Beego、Echo、Iris、 Revel、Martini等...

Global site tag (gtag.js) - Google Analytics