tinygo

package module
v0.0.0-...-ae40e7c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 3, 2018 License: MIT Imports: 3 Imported by: 0

README

#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) 使用该配置文件可以实现多重布局

Documentation

Overview

Package tinygo 实现一个组合式应用管理器

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddApp

func AddApp(app App)

AddApp 添加App

func AddApps

func AddApps(apps ...App)

AddApps 批量添加App

func Run

func Run()

Run 运行

func SetEvent

func SetEvent(event ManagerEvent)

SetEvent 设置App管理器事件

Types

type App

type App interface {
	// Name 返回App名称
	Name() string
	// Init 应用初始化接口
	Init() error
	// Run 应用运行接口
	Run() error
}

App 应用接口

type DefaultManagerEvent

type DefaultManagerEvent struct {
}

默认事件处理器

func (*DefaultManagerEvent) AferRunning

func (this *DefaultManagerEvent) AferRunning(manager *Manager, app App)

AferRunning 在每个App运行后触发

func (*DefaultManagerEvent) BeforeRunning

func (this *DefaultManagerEvent) BeforeRunning(manager *Manager, app App)

BeforeRunning 在每个App运行前触发

func (*DefaultManagerEvent) Ended

func (this *DefaultManagerEvent) Ended(manager *Manager)

Ended 在Manager停止运行时触发

func (*DefaultManagerEvent) InitFailed

func (this *DefaultManagerEvent) InitFailed(manager *Manager, app App, err error)

InitFailed 在App初始化出错的时候触发

func (*DefaultManagerEvent) RunFailed

func (this *DefaultManagerEvent) RunFailed(manager *Manager, app App, err error)

RunFailed 在每个App运行出错的时候触发

func (*DefaultManagerEvent) RunFinished

func (this *DefaultManagerEvent) RunFinished(manager *Manager, app App)

RunFinished 在每个App运行完毕的时候触发

func (*DefaultManagerEvent) RunPaniced

func (this *DefaultManagerEvent) RunPaniced(manager *Manager, app App, info interface{})

RunPaniced 在每个App崩溃的时候触发

func (*DefaultManagerEvent) Started

func (this *DefaultManagerEvent) Started(manager *Manager)

Started 在Manager运行的时候触发

type Error

type Error string

错误信息

func (Error) Error

func (this Error) Error() error

Error 生成error类型

func (Error) Format

func (this Error) Format(data ...interface{}) Error

Format 格式化错误信息并生成新的错误信息

func (Error) String

func (this Error) String() string

String 返回错误字符串描述

type Manager

type Manager struct {
	Apps  []App
	Event ManagerEvent
}

管理器

func NewManager

func NewManager() (*Manager, error)

NewManager 创建App管理器

func (*Manager) AddApp

func (this *Manager) AddApp(app App)

AddApp 添加App

func (*Manager) Run

func (this *Manager) Run()

Run 运行App

type ManagerEvent

type ManagerEvent interface {
	// Started 在Manager运行的时候触发
	Started(manager *Manager)
	// BeforeRunning 在每个App运行前触发
	BeforeRunning(manager *Manager, app App)
	// AferRunning 在每个App运行后触发
	AferRunning(manager *Manager, app App)
	// InitFailed 在App初始化出错的时候触发
	InitFailed(manager *Manager, app App, err error)
	// RunFailed 在每个App运行出错的时候触发
	RunFailed(manager *Manager, app App, err error)
	// RunPaniced 在每个App崩溃的时候触发
	RunPaniced(manager *Manager, app App, info interface{})
	// RunFinished 在每个App运行完毕的时候触发
	RunFinished(manager *Manager, app App)
	// Ended 在Manager停止运行时触发
	Ended(manager *Manager)
}

管理器事件

Directories

Path Synopsis
Package config 包含解析配置文件相关工具
Package config 包含解析配置文件相关工具
Package connector 实现了基本的连接器接口
Package connector 实现了基本的连接器接口
Package log 包含日志相关工具
Package log 包含日志相关工具
Package meta 包含元数据解析和验证工具
Package meta 包含元数据解析和验证工具
Package router 包含路由相关工具
Package router 包含路由相关工具
Package session 实现了基于内存的session管理功能
Package session 实现了基于内存的session管理功能
Package sql 实现了一个基本的sql工具
Package sql 实现了一个基本的sql工具
package template 实现了循环布局模板
package template 实现了循环布局模板
Package validator 实现了验证器的基本接口
Package validator 实现了验证器的基本接口
package web 实现了处理http请求的基本工具
package web 实现了处理http请求的基本工具

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL