33
44Tiny Go Web (TGW)是一个非常简单的Web框架,甚至谈不上框架。TGW无意取代任何框架,TGW的诞生是因为作者在使用beego时有种挫败感,决定自己重新写一个适合自己网站用的,从构思到完成总共只花了一天的时间,因为觉得它已经够用了,就没有继续添加新的功能。
55
6- ## 运行示例
6+ ## Qiuck Start
77
88```
99> go get github.com/icattlecoder/tgw
@@ -15,24 +15,6 @@ Tiny Go Web (TGW)是一个非常简单的Web框架,甚至谈不上框架。TGW
1515![ img] ( http://icattlecoder.qiniudn.com/tgw.png )
1616
1717
18- TGW使用非常简单,没有固定的目录结构,不过遵循大众习惯,建议组织以下结构:
19-
20- ```
21- │── controllers
22- │ ├── default.go
23- ├── main.go
24- ├── models
25- │ └── Author.go
26- ├── static
27- │ ├── css
28- │ ├── img
29- │ └── js
30- └──── view
31- ├── include
32- │ └── nav.html
33- └── index.html
34- ```
35-
3618## 控制器
3719
3820控制器实现自动路由注册,例如有以下的结构
@@ -73,7 +55,6 @@ func (s *Server) Json() (data map[string]interface{}) {
7355 return
7456}
7557
76-
7758// 这里根据请求自动解析出args
7859// 例如可将 /hello?msg=hello world的函数解析为TestArgs{Msg:"hello world"}
7960// 由于没有hello.html模板,并且没有返回值,可以通过env中的RW成员写入返回数据
@@ -85,6 +66,8 @@ func (s *Server) Hello(args TestArgs, env tgw.ReqEnv) {
8566 log.Println (err)
8667 }
8768}
69+
70+ func (s *Server ) AdminIndex (){}
8871```
8972
9073以下是程序启动代码
@@ -99,17 +82,17 @@ func main() {
9982tgw的Register方法会自动注册以下的路由:
10083
10184```
102- /hello ===> Hello
103- /index ===> Index
104- /Json ===> Json
105- /admin/index ===> AdminIndex
85+ /hello ===> func (s *Server) Hello(args TestArgs, env tgw.ReqEnv)
86+ /index ===> func (s *Server) Index() (data map[string]interface{})
87+ /Json ===> func (s *Server) Json() (data map[string]interface{})
88+ /admin/index ===> func (s *Server) AdminIndex()
10689```
10790
10891即` localhost:8080/index ` 的处理函数是` service.Index ` ,` localhost:8080/admin/index ` 的处理函数是` service.AdminIndex `
10992
11093## 视图
11194
112- 视图默认放在view文件夹中,其文件名与url有关,例如:` /hello ` 对应 ` view/index.html `
95+ 视图默认放在view文件夹中,其文件名与url有关,例如:` /index ` 对应 ` view/index.html `
11396如果某个url没有对应的视图,但是它的处理函数却有返回值,那么将返回对象JOSN序列化的结果。
11497视图中可以通过` <include src="<src>" /> ` 指令包含其它文件,如公共区域
11598
@@ -125,10 +108,13 @@ func (s *Server) Hello(args TestArgs, env tgw.ReqEnv)
125108对于请求` localhost:8080/Hello?msg=Hello world ` ,tgw将自动根据语法方法识别并解析出TestArgs变量.
126109当前能够自动解析的类型有` int ` 、` string ` 、` bool ` 、` float64 `
127110
111+ ### 扩展参数解析
112+ tgw自带` *Args ` 参数解析,即结构名符合` *Args ` 的参数都可以自动解析。如果需要定制解析,实现Parse接口即可
113+
128114## Session支持
129115
130- 框架实现了一个简单的基于内存的session管理 ,如果需要使用session,处理函数必须有一个类型为tgw.ReqEnv的参数,通过此函数可访问Session。
116+ 框架实现了一个简单的session管理 ,如果需要使用session,处理函数必须有一个类型为tgw.ReqEnv的参数,通过此函数可访问Session。
131117
132118## 自定义
133119
134- 如果函数包含类型为tgw.ReqEnv函数 ,且无返回值,可以直接向ReqEnv.RW中写入返回结果
120+ 如果函数包含类型为tgw.ReqEnv参数 ,且无返回值,可以直接向ReqEnv.RW中写入返回结果
0 commit comments