## 安装 ``` go get -u gitee.com/johng/gf ``` ## 使用 ```go import "gitee.com/johng/gf/g/xxx/xxx" ``` ## 说明 1. [框架说明](#框架介绍) - [框架介绍](#框架介绍) - [源码结构](#源码结构) 1. [Web服务开发](javascript:;) - [HTTPServer](javascript:;) - [Web Server](javascript:;) - [多域名支持](javascript:;) - [MVC开发模式](javascript:;) - [Controller](javascript:;) - [Model](javascript:;) - [View](javascript:;) - [服务注册](javascript:;) - [控制器注册](javascript:;) - [REST控制器](javascript:;) - [执行对象注册](javascript:;) - [回调函数注册](javascript:;) - [Cookie](javascript:;) - [Session](javascript:;) - [路由控制](javascript:;) - [配置管理](javascript:;) - [单例管理](javascript:;) - [数据校验](javascript:;) - [模板引擎](javascript:;) - [数据库操作](javascript:;) 1. [网络服务开发](javascript:;) - [TCPServer](javascript:;) - [UDPServer](javascript:;) 1. [功能模块设计](javascript:;) - [缓存模块](javascript:;) - [日志模块](javascript:;) - [时间模块](javascript:;) - [命令行模块](javascript:;) - [环境变量模块](javascript:;) - [文件管理模块](javascript:;) - [并发安全容器](javascript:;) - [通用编码模块](javascript:;) - [其他模块简介](javascript:;) ### 框架介绍 gf(Go Frame)是一款为Web服务及网络服务开发设计的,轻量级的Go语言开发框架。 gf框架基于模块化设计,实现了通用的HTTP/TCP/UDP Server,并实现了Web服务开发的相关核心组件, 包括:MVC模式、Cookie、Session、模板引擎、路由控制、配置管理、数据校验、数据库操作等等, 并且提供了数十个自行研发的实用模块,包括:缓存模块、日志模块、时间模块、命令行模块、环境变量模块、并发安全容器等等。 ### 源码结构 . ├── g 【框架目录】 │   ├── container 【常用数据结构】 │   │   ├── gbtree B+树 │   │   ├── glist 并发安全的双向链表 │   │   ├── gmap 并发安全的哈希表 │   │   └── gset 并发安全的集合 │   │   │   ├── database 【数据库操作】 │   │   └── gdb 通用关系型数据库操作封装(目前仅支持MySQL、PostgreSQL) │   │   │   ├── encoding 【数据编码】 │   │   ├── gbase64 BASE64 │   │   ├── gbinary 二进制操作 │   │   ├── gcompress 数据压缩 │   │   ├── gcrc32 CRC32 │   │   ├── ghash 常用哈希函数 │   │   ├── ghtml HTML编码 │   │   ├── gjson JSON │   │   ├── gmd5 MD5 │   │   ├── gsha1 SHA1 │   │   └── gurl URL │   │   │   ├── frame 【开发框架】 │   │   ├── gcfg 通用配置管理 │   │   ├── gins 单例对象管理 │   │   └── gmvc MVC模式封装基类 │   │   │   ├── net 【网络通信】 │   │   ├── ghttp 强大的HTTP客户端及服务端 │   │   ├── gipv4 IPv4操作 │   │   ├── gipv6 IPv6操作 │   │   ├── grouter 路由管理 │   │   ├── gscanner 端口扫描 │   │   ├── gsmtp SMTP邮件管理 │   │   ├── gtcp TCP服务端 │   │   └── gudp UDP服务端 │   │   │   ├── os 【系统管理】 │   │   ├── gcache 缓存管理 │   │   ├── gcmd 命令行控制 │   │   ├── genv 环境变量 │   │   ├── gfile 文件管理 │   │   ├── gfilepool 文件指针池 │   │   ├── gfilespace 文件碎片管理 │   │   ├── glog 日志管理 │   │ ├── gmmap MMAP文件内存映射 │   │   ├── gtime 时间管理 │   │   └── gview 视图管理(通用的模板管理对象,独立于MVC模块) │   │   │   └── util 【常用工具】 │   ├── gconv 类型转换 │   ├── grand 随机数 │   ├── gregx 正则表达式 │   ├── gvalid 表单校验 │   └── gutil 其他工具 │   ├── geg 【框架示例】 ├── vendor 【第三方包】 └── version.go 【版本信息】 ## 配置 1. 默认读取文件运行目录的config.json文件; 1. 支持多配置文件管理,默认配置文件目录为当前运行目录; 1. config.json配置文件说明: ```json { "viewpath" : "视图文件存放路径", "routings" : { "dispatch" : { "解析匹配规则1" : "解析替换规则1", "解析匹配规则2" : "解析替换规则2" }, "patch" : { "打包匹配规则1" : "打包替换规则1", "打包匹配规则2" : "打包替换规则2" } }, "database" : { "数据库分组名称" : [ { "host" : "地址", "port" : "端口", "user" : "账号", "pass" : "密码", "name" : "数据库名称", "type" : "数据库类型(mysql|pgsql)", "role" : "数据库角色(master|slave)", "charset" : "字符编码", "priority" : "数据库优先级(负载均衡处理)" } ] } } ``` 1. config.json示例文件: ```json { "viewpath" : "/home/www/templates/", "routings" : { "dispatch" : { "\/list\/page\/(\d+)[\/\?]*" : "/list?page=$1&" } }, "database" : { "default" : [ { "host" : "127.0.0.1", "port" : "3306", "user" : "root", "pass" : "123456", "name" : "test", "type" : "mysql", "role" : "master", "charset" : "utf8", "priority" : "100" }, { "host" : "127.0.0.1", "port" : "3306", "user" : "root", "pass" : "123456", "name" : "test", "type" : "mysql", "role" : "slave", "charset" : "utf8", "priority" : "100" } ], "ucenter" : [ { "host" : "127.0.0.1", "port" : "3306", "user" : "root", "pass" : "123456", "name" : "ucenter", "type" : "mysql", "role" : "master", "charset" : "utf8", "priority" : "100" } ] } } ```