Skip to content

kdada/tinygo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#TinyGo 1.0 一个轻量级Http框架

查看tinygo文档的方法如下:
(1) 确保GOROOT和GOPATH环境变量设置正确
(2) 确保tinygo的位置在$GOPATH/src/github.com/kdada/tinygo
(3) 在shell中执行如下命令

cd $GOROOT/bin
godoc -http :9999

(4) 通过 http://localhost:9999 访问本地文档,即可在Packages中找到tinygo的文档

一个tinygo项目基本结构如下(可通过web.cfg变更项目结构):

main.go
web.cfg
|-app
  |-favicon.ico
  |-robots.txt
  |-css
  |-js
  |-img
  |-views
    |-layout.json
    |-layout
      |-layout.html
    |-home
      |-index.html
|-controllers
  |-home.go
|-models
  |-model.go
|-services
  |-service.go

(1) main.go为项目启动文件
(2) app目录为应用文件目录,用于存放前端所有文件
(3) views内放置视图页面文件,layout.json为视图布局配置文件
(4) controllers为控制器文件目录,一般一个控制器一个文件
(5) models为模型文件目录
(6) services为服务文件目录,网络服务方法,数据库服务方法等可以放在该目录中

web.cfg 配置文件范例如下(UTF-8格式)

#tinygo配置文件

#应用名称
App = blog

#是否启用https,可选,默认为false
Https = false

#监听端口,默认为80,https为true则默认为443
Port = 8080

#证书(PEM)路径,如果启用了https则必填
#Cert = keys/cert.pem

#私钥(PEM)路径,如果启用了https则必填
#PrivateKey = keys/privatekey.pem

#首页
Home = /home/index

#是否启用session
Session = true

#session类型,参考tinygo/session,默认为memory
SessionType = memory

#session源,参考tinygo/session,默认为空
#SessionSource =

#session过期时间,单位为秒,csrf的session过期时间也由该值决定
SessionExpire = 1800

#Session Cookie名,默认为ssid
SessionCookieName = blog_ssid

#Session Cookie的过期时间,单位为秒,默认为0(0表示浏览器关闭后过期)
#SessionCookieExpire

#是否启用CSRF,默认为false
CSRF = true

#CSRF session类型,参考tinygo/session,默认为memory
CSRFType = memory

#CSRF session源,参考tinygo/session,默认为空
#CSRFSource =

#CSRF的token过期时间,单位为秒
#该过期时间不是CSRF的session的过期时间,而是生成的每个CSRF token的过期时间
CSRFExpire = 300

#CSRF Cookie名,默认为xid
CSRFCookieName = blog_xid

#CSRF 表单字段名,默认为csrf
CSRFTokenName = __xfield

#CSRF Cookie的过期时间,单位为秒,默认为0(0表示浏览器关闭后过期)
#CSRFCookieExpire

#静态文件目录,默认为content,多个目录用;分隔,最后一级目录名不能重复
Static = app/js;app/css;app/tmpl

#静态文件目录是否允许显示目录列表,默认为false
List = true

#视图文件目录,默认为views
View = app/views

#布局配置文件名,默认为空
LayoutConfigPath = app/views/layout.json

#视图文件扩展名,默认为html
TemplateExt = html

#模板文件内部分模板名,用于返回部分视图时使用,默认为Content
TemplateName = Content

#是否预编译页面路径,默认为false,生产环境为true可以提高效率
Precompile = false

#使用Api返回的数据的解析格式,默认为auto(其他设置包括json,xml)
Api = json

#网站图标路径,默认为favicon.ico
Favicon = app/favicon.ico

#爬虫协议文件路径,默认为robots.txt
Robots = app/robots.txt

#是否启用日志,默认为true
Log = true

#日志类型,参考tinygo/log,默认为console
LogType = console

#日志路径,日志类型为file的时候需要设置
#LogPath = logs

#异步日志,默认为false
LogAsync = false

#单次请求最大占用内存大小,默认32 MB
MaxRequestMemory = 33554432

layout.json 布局配置文件范例如下(UTF-8格式)

{
	"LayoutMap":{
		"Default":"layout/layout.html",
		"Index":"layout/layout.html"
	},
	"DefaultLayout":"Default",
	"LayoutSpec":{
		"home/index.html":"Index",
		"home/login.html":"Default",
		"xxhome/":"Index"
	}
}

(1) LayoutMap定义了布局文件和布局文件别名,按 别名:布局文件路径 进行映射
(2) LayoutSpec定义了视图文件或目录下的所有视图文件使用相应的布局文件,直接定义的视图文件到布局的映射优先级高于目录到布局的映射
(3) DefaultLayout定义了LayoutSpec没有定义的视图文件使用的默认布局,仅对非布局文件有效
(4) 使用该配置文件可以实现多重布局