Skip to content

winq2008/GoMvc

 
 

Repository files navigation


最后更新日期:2016-05-07

下载GoMvc

有任何问题,可加QQ群:184572648,我基本上每天都在线的

原域名因忘记续费被别人抢注了,新域名为66a.cm

更新日志
编译
配置文件
路由注册
对其它包的依赖

更新日志

   
   2016-05-07
1,对原来的this.QueryString,this.Form获取表单参数的方做了一些改进
this.QueryString.Int("id"),this.this.QueryString.String("UserName")来获取数据,省去了类型转换,使代码更简练。

2,增加了一些属性,和函数。 this.IsAjax 判断当前请求是否Ajax this.IsPost 当前请求类型是否Post this.IsInWeiXin() 是否在微信浏览器下 this.IsCrawler() 当前请求是否来自搜索引擎的抓取

3,RouteTable.AddRote(&RouteItem{ Name: "article_details", Url: "details/{id}", Defaults: map[string]interface{}{"controller": "home", "action": "Details", "id": 0}, Constraints: map[string]string{"id": ^(\d+)$}}) 原来对id参数的获取是通过this.RouteData["id"]获取,现在可以直接通过this.QueryString.Int("id")来获取

2014-07-25 修复RenderAction模板函数Cookies传递的BUG <b>2014-06-13</b> 修改日志记录System/Log/Logger.go,AddError自动记录堆栈信息,增加AddErrMsg函数,自动记录堆栈信息,Add不记堆栈信息。
2014-06-04	    Controller增加ClearSession函数,RenderView增加错误日志
2014-05-23	    修改Session相关处理部分,在配置文件中,0配成零或空,表示程序不使用Session,
	    比如做WEBAPI时,可以配置成0,程序不使用Session可以降低资源占用,提高性能。
2014-05-22    修改Http请求处理过程,支持这样的Action
        func (this *Controller) IsExist() string {
        }
        action可以直接返回一个string类型,如果是其它的非ViewResult类型,会转换成string并输出。
2014-05-20    修改Controller的IsPost属性,修改Binder的错误。
2014-05-12    Controller加入Redirect函数,修改RederAction,修改RederAction。。
2014-05-08   加入模板函数RenderView,更新文档;将System\TemplateFunc包跟System\ViewEngine合并成一个包。

2014-05-07   修改RanderAction模板函数的一处错误。

2014-05-05   修改RanderAction模板函数的Bug,所有错误日志记录堆栈信息,以便调试,处理错误。

            增加编译的批处理文件Windows下运行build.bat,Linux下运行build.sh

2014-01-24   程序意外退出时,记录错误日志。 2013-10-14   增加域的功能。 2013-10-12   修复路由和FieSession的Bug。


编译

GoMVC是一个简单,便捷的MVC框架。程序注释全部使用中文,很适合国人使用。文档也很详细。 编译时,需要把GoMvc目录设置为GOPATH.


配置文件

网站的配置文件为web.config,格式为XML,配置项的内容如下:

ShowErrors:是否显示错误信息。true,显示;false,不显示。建义在测试时可以设置为true,发布到正式环境后设置为false。

CookieDomain:Cookies的Domain信息,可用来共享cookie。如domain.com,和sub.domain.com,可以通过把CookieDomain统一设置为domain.com来共享cookies信息

Theme:网站当前使用的主题,在Views目录下,可以有多套网站模板。

LogPath:日志文件的存放位置

LogFileMaxSize:单个日志文件的大小,超过指定大小后将创建一个新的日志文件。

DriverName:数据库的驱动名称。

DataSourceName:数据库的连接字符串。

StaticDir:静态目录,该目录下通常是CSS,JS,图片等静态资源。

StaticFile:静态文件,用来设置单个的静态文件,主要是为了提高灵活性,满足特殊的需求.

SessionType:Session的存放类型,1,文件,2内存,3Mysql数据库,修改需重启才能生效。当配置为3时,需要在数据库中创建一个表,来存放session,创建表的SQL如下:

    CREATE TABLE `session` (
    `session_id` CHAR(32) NULL,
    `session_data` BLOB NULL,
    `lastupdatetime` DATETIME NULL,
    PRIMARY KEY (`session_id`)
    )
    COLLATE='utf8_general_ci';
  

SessionLocation:当SessionType为1时,该项为Session文件的存放路径;SessionType为3时,该项为数据库连接字符串。

SessionTimeOut:Session超时时间,单位分钟

MemFreeInterval:程序中有定时器,定时对Session进行检查,删除超时的Session,该配置项用来设置多久进行一次检查,单位秒,默认值60。

ListenPort:网站的端口号,该配置改后必须重启程序才能生效。

 

路由注册

用RouteTable.AddRote来注册路由。其格式如下:

  //注册标准路由
  RouteTable.AddRote(&RouteItem{
  Name:     "default",
  Url:      "{controller}/{action}",
  Defaults: map[string]interface{}{"controller": "home", "action": "index"}})

Name:路由名称
Url:路由的格式
Defaults: 路由参数的默认值

除了默认值,还可以指定约束,来限制参数的类型,如下面的例子,指定id参数,只能是数字型。
  RouteTable.AddRote(&RouteItem{
  Name:        "default",
  Url:         "{controller}/{action}/{id}",
  Defaults:    map[string]interface{}{"controller": "home", "action": "index", "id": 123},
  Constraints: map[string]string{"id": `^(\d+)$`}})
在上面的例子中我们指定了id参数只能是数字,并设置了默认值123。要在Controller中获取该参数值,可以用this.RouteData["id"]。

因为在Go没有办法反射出包中的所有struct,所以需要手动来注册Controller,格式如下:

  import (
  "System/Web"
  "fmt"
  )

type Home struct { Web.Controller }

//注册Controller func init() { Web.App.RegisterController(Home{}) }

对于Controller的命名没有严格的要求,可以用Home,也可以用HomeController

对其它包的依赖

GOMvc追求简单,实用,尽可能减少对其它包的依赖。在GoMvc中有两个地方用到了第三方包:

1,System/Session/MysqlSession.go 该文件实现了以mysql的方式来存储Session的功能,需要mysql的驱动。可以此下载https://github.com/go-sql-driver/mysql

2,System/fsnotify  这是一个监控文件修改的第三方包,已下载到System目录,用户不需再自己安装。该包位于 https://github.com/howeyc/fsnotify

下载GoMvc

有任何问题,可加QQ群:184572648,我基本上每天都在线的

About

a golang mvc like asp.net mvc

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 70.8%
  • CSS 24.0%
  • JavaScript 4.9%
  • Other 0.3%