# fiber **Repository Path**: newly-released_0/fiber ## Basic Information - **Project Name**: fiber - **Description**: 基于go-fiber框架引入zap日志,gorm操作MySQL搭建的便捷框架。 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2024-04-18 - **Last Updated**: 2024-04-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于fiber的通用项目框架 ## 注意 框架开启多进程之后,所有的初始化都会执行一遍,比如redis,mysql。。因为进程间数据是隔离的 ## 使用说明 框架仅初始化了第三方库,对于第三方库的操作请自行查看其文档。 比如:gorm操作数据库,validator自定义约束,cron定时任务 ### 热更新 使用第三方库tableflip实现了热更新 ### 路由 做了版本控制,使得路由跳转有点多,可删除,只使用一个路由文件控制 ### 中间件 1. 把分页参数写进了中间件 ``` import "fiber/global" // 获取page page := c.Locals("page").(*global.Page) ``` ### 验证器 ``` // 封装不少函数进了helper,根据需求进行修改 import "fiber/helper" type UserRegister struct { Name string `form:"name" json:"name" validate:"required"` Mobile string `form:"mobile" json:"mobile" validate:"required,checkIdCard"` Password string `form:"password" json:"password" validate:"required"` } user := new(UserRegister) // 自带的绑定参数 if err := c.BodyParser(user); err != nil { // 强校验数据类型或body为空 // 暂时想到的是正则错误字符串,以便返回指定错误(前端先强校验一次可避免) // 后续根据需求看是否需要加上 return helper.Fail(c, err.Error(), global.QueryErrorCode) } // 验证器 if err := helper.ValidateStruct(user); err != nil { return helper.Fail(c, err.Error()) } ``` ## 目录说明 ``` |-- app // 项目逻辑代码 |-- controller // 控制器:加入了版本控制 |-- middleware // 中间件 |-- models // 数据模型 |-- validate // 验证器 |-- config // 全局配置文件 |-- global // 全局类 |-- helper // 助手函数类:如返回数据通过助手函数会将返回记录数据进日志 |-- routes // 路由:拆分路由组,多项目以及项目过大时方便查看 |-- storage // 资源文件 |-- logs // 日志存放目录,不进git |-- static // 静态资源 |-- utils // 工具类:系统通用函数 |-- cron.go // 定时任务:后期开发 |-- main.go // 项目入口文件 |-- example.yaml // 配置文件 ``` ## 使用到的第三方包名 ``` github.com/gofiber/fiber/v2 // web框架 github.com/gofiber/websocket/v2 // websocket github.com/spf13/viper // 读取配置 go.uber.org/zap // 日志 gopkg.in/natefinch/lumberjack.v2 // 日志切割归档 gorm.io/gorm // ORM库 gorm.io/driver/mysql // mysql库 github.com/go-playground/validator/v10 // 验证器 github.com/go-co-op/gocron // 定时任务 github.com/go-redis/redis // redis ``` ## 导入第三方包过慢解决办法 ``` go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct ```