gone

package module
v0.0.0-...-0be03cd Latest Latest
Warning

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

Go to latest
Published: Mar 21, 2023 License: MIT Imports: 20 Imported by: 0

README

gone

尝试自制Web框架

使用文档

Documentation

Index

Constants

View Source
const (
	LogRed    int = 31
	LogGreen  int = 32
	LogYellow int = 33
	LogBlue   int = 36
	LogPurple int = 35
)
View Source
const DEFAULT_BUILD_NAME = "main"

DEFAULT_BUILD_NAME 编译后的文件名

View Source
const DEFAULT_CONFIG_PATH string = "application.json"

DEFAULT_CONFIG_PATH 默认配置文件地址

DEFAULT_INOTIFY_MASK 默认监听事件

IN_MODIFY 文件被修改

IN_CREATE 目录被创建

IN_DELETE_SELF 目录被删除 TODO: 文件移动事件也应该触发热更新

Variables

View Source
var (
	LogInfo  = infoLogger.Println
	LogInfof = infoLogger.Printf
	LogWarn  = warnLogger.Println
	LogWarnf = warnLogger.Printf
	LogErr   = errLogger.Println
	LogErrf  = errLogger.Printf
)

Functions

func ClearTerm

func ClearTerm()

ClearTerm 清屏

func Data

func Data(code int, data []byte) *responseData

Data 构造二进制响应

func Debounce

func Debounce(after time.Duration) func(func())

Debounce 防抖

func Html

func Html(code int, data []byte) *responseHtml

Html 构造网页响应

func JWTToken

func JWTToken(payload map[string]any, secret []byte) (string, error)

JwtToken JWT加密获取token

func Json

func Json(code int, data any) *responseJson

Json 构造 json 响应

func Loading

func Loading(done chan int, message string)

Loading 加载动画

func ParseJWT

func ParseJWT(token string, secret []byte) (map[string]any, error)

ParseJWT 解析JWT

func SetCors

func SetCors(origin, methods, headers string) func(*Context) IResponse

SetCors 设置跨域

func Spinner

func Spinner() func() string

Spinner 获取加载图标

func StatusCode

func StatusCode(code int) *responseStatusCode

StatusCode 构造

func String

func String(code int, format string, v ...any) *responseString

String 构造字符串响应

Types

type AppConfig

type AppConfig struct {
	Name       string `json:"name"`
	Port       int    `json:"port"`
	Production bool   `json:"production"`
	MainFile   string `json:"mainFile"`
	Loggers    []struct {
		Name   string `json:"name"`
		Output bool   `json:"output"`
	} `json:"loggers"`
	Watcher struct {
		Includes []string `json:"includes"`
		Excludes []string `json:"excludes"`
	} `json:"watcher"`
	Database struct {
		Host     string `json:"host"`
		Port     int    `json:"port"`
		Username string `json:"username"`
		Password string `json:"password"`
		DdName   string `json:"dbName"`
		Max      int    `json:"max"`
	} `json:"database"`
}

AppConfig 项目配置

func (*AppConfig) IsValid

func (config *AppConfig) IsValid(name string) bool

IsValid 判断文件是否可用

func (*AppConfig) ParseContent

func (config *AppConfig) ParseContent(data []byte) error

ParseContent 从二进制加载配置

func (*AppConfig) ParseFile

func (config *AppConfig) ParseFile(name string) error

ParseFile 从文件读取配置

type Context

type Context struct {
	Source *DataSession
	Req    *http.Request
	Resp   http.ResponseWriter
	Method string
	Path   string
	// contains filtered or unexported fields
}

Context 上下文

func (*Context) Body

func (ctx *Context) Body() []byte

Body 获取请求体

func (*Context) Header

func (ctx *Context) Header(key string) string

Header 获取请求头

func (*Context) PostForm

func (ctx *Context) PostForm(key string) string

PostFrom 获取表单参数

func (*Context) Query

func (ctx *Context) Query(key string) string

Query 获取请求参数

func (*Context) SetHeader

func (ctx *Context) SetHeader(key, value string)

SetHeader 设置响应头

func (*Context) Write

func (ctx *Context) Write(data []byte)

Write 写入响应数据

type DataEngine

type DataEngine struct {
	// contains filtered or unexported fields
}

DataEngine 数据库引擎

func NewMySQL

func NewMySQL(url string) (*DataEngine, error)

NewDataEngine 构造DataEngine

func (*DataEngine) Close

func (engine *DataEngine) Close()

Close 关闭数据库连接

func (*DataEngine) NewSession

func (engine *DataEngine) NewSession() *DataSession

NewSession 获取数据库会话

func (*DataEngine) SetMaxConns

func (engine *DataEngine) SetMaxConns(n int)

SetMaxConns 设置最大连接数

type DataSession

type DataSession struct {
	Db *sql.DB
	// contains filtered or unexported fields
}

DataSession 数据库会话

func (*DataSession) Clear

func (session *DataSession) Clear()

Clear 重置引擎

func (*DataSession) Delete

func (session *DataSession) Delete() error

Delete 删除

func (*DataSession) Equal

func (session *DataSession) Equal(name string, value any) *DataSession

Equal 字段等于

func (*DataSession) Insert

func (session *DataSession) Insert(v ...any) error

Insert 插入数据

func (*DataSession) Limit

func (session *DataSession) Limit(args ...int) *DataSession

Limit 限制查询

func (*DataSession) OrderBy

func (session *DataSession) OrderBy(name string) *DataSession

OrderBy 排序语句

func (*DataSession) Select

func (session *DataSession) Select(v any) error

Select 查询

func (*DataSession) Set

func (session *DataSession) Set(name string, value any) *DataSession

Set 设置修改参数

func (*DataSession) Table

func (session *DataSession) Table(name string) *DataSession

Table 设置表格名称

func (*DataSession) Update

func (session *DataSession) Update() error

Update 修改信息

func (*DataSession) Where

func (session *DataSession) Where(name string, opt string, value any) *DataSession

Where 设置 where 子句

type GLogger

type GLogger struct {
	// contains filtered or unexported fields
}

GLogger 日志

func NewGLogger

func NewGLogger(name string, output io.Writer, prefix string, color int) *GLogger

NewGLogger 新建logger

func (*GLogger) Printf

func (logger *GLogger) Printf(format string, v ...any)

Printf 格式化输出

func (*GLogger) Println

func (logger *GLogger) Println(v ...any)

Println 按行输出

func (*GLogger) SetStatus

func (logger *GLogger) SetStatus(value bool)

SetStatus 设置输出状态

type GONE_CONFIG_CONTENT

type GONE_CONFIG_CONTENT []byte // 配置文件内容,可通过 embed 嵌入

type GONE_TLS_CERT

type GONE_TLS_CERT string // https证书文件路径

type GONE_TLS_KEY

type GONE_TLS_KEY string // https密钥文件路径

type Handler

type Handler func(ctx *Context) IResponse

Handler 处理函数

func (Handler) Do

func (handler Handler) Do(ctx *Context) IResponse

Do 实现 IHandler 接口,函数式接口

type IFileConfig

type IFileConfig interface {
	ParseFile(name string) error
	ParseContent(data []byte) error
	IsValid(name string) bool
}

IFileConfig 文件配置

type IHandler

type IHandler interface {
	Do(ctx *Context) IResponse
}

IHandler 处理函数接口

type IResponse

type IResponse interface {
	Invoke(ctx *Context)
}

IResponse 响应接口

func ErrHandler

func ErrHandler(ctx *Context, err any) IResponse

ErrHandler 错误处理

type RouterGroup

type RouterGroup struct {
	// contains filtered or unexported fields
}

RouterGroup 路由分组

func (*RouterGroup) After

func (group *RouterGroup) After(afters ...func(ctx *Context) IResponse)

After 添加后置处理拦截器

func (*RouterGroup) Before

func (group *RouterGroup) Before(befores ...func(ctx *Context) IResponse)

Before 添加拦截

func (*RouterGroup) Get

func (group *RouterGroup) Get(pattern string, handler func(ctx *Context) IResponse)

Get 添加 GET 路由

func (*RouterGroup) Group

func (group *RouterGroup) Group(prefix string) *RouterGroup

Group 新建分组

func (*RouterGroup) Post

func (group *RouterGroup) Post(pattern string, handler func(ctx *Context) IResponse)

Post 添加 POST 路由

type WEvent

type WEvent struct {
	Type int
	Msg  string
}

WEvent 监听事件

type Watcher

type Watcher struct {
	// contains filtered or unexported fields
}

Watcher 文件监听

由于syscall只支持 linux 系统,所以该监控只在 linux 下有效,windows下无法使用

跨平台的解决方案似乎应该使用 golang.org/x/sys

func NewWatcher

func NewWatcher(basePath string, includes []string, excludes []string) (*Watcher, error)

NewWather 创建Watcher

默认监听 basePath 及其下所有目录,忽略隐藏文件。可通过 includes 和 excludes 来强制添加和排除监听

func (*Watcher) AddWatch

func (watcher *Watcher) AddWatch(dirpath string) error

AddWatch 将目录添加进监听

func (*Watcher) Close

func (watcher *Watcher) Close()

Close 关闭监听

func (*Watcher) DeleteWatch

func (watcher *Watcher) DeleteWatch(dirpath string)

DeleteWatch 删除监听

func (*Watcher) Start

func (watcher *Watcher) Start(sigChan chan int)

Start 开始监听

该方法会开启两个 goroutine,一个用于监听事件,一个用于处理事件。注意该方法是非阻塞的。

type WebEngine

type WebEngine struct {
	*RouterGroup
	// contains filtered or unexported fields
}

WebEngine http引擎,将作为http.Handler

func New

func New() *WebEngine

New 构造WebEngine

func (*WebEngine) Run

func (engine *WebEngine) Run(opts ...any)

Run 运行项目

func (*WebEngine) ServeHTTP

func (engine *WebEngine) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP 实现http.Handler

func (*WebEngine) Work

func (engine *WebEngine) Work()

Work 开始工作

Jump to

Keyboard shortcuts

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