module
Version:
v1.4.0
Opens a new window with list of versions in this module.
Published: Oct 24, 2026
License: MIT
Opens a new window with license information.
README
¶
CMF Core
CMF (Core) 是一个基于 Go 语言开发的模块化 Web 应用框架核心,提供了配置管理、缓存、数据库、文件系统、JWT 认证、RBAC 权限控制等核心功能。旨在提供可扩展且易于维护的基础设施。
技术栈 (Tech Stack)
- 语言: Go 1.25+
- Web 框架: Fiber v2 (
github.com/gofiber/fiber/v2)
- 配置管理: Viper (
github.com/spf13/viper), godotenv (github.com/joho/godotenv)
- 日志: Zap (
go.uber.org/zap), Fiber Zap Middleware
- 数据库:
database/sql (支持 MySQL, PostgreSQL, SQLite)
- 缓存: BigCache (
github.com/allegro/bigcache), GoCache (github.com/eko/gocache), Redis (github.com/redis/go-redis)
- 认证: JWT (
github.com/golang-jwt/jwt/v5, github.com/gofiber/contrib/jwt)
- 授权: Casbin (
github.com/casbin/casbin/v2) 用于 RBAC
- 存储: 抽象文件系统 (本地, S3 via
github.com/gofiber/storage/s3)
- 验证: Go Playground Validator (
github.com/go-playground/validator/v10)
- 文档: Swagger (
github.com/gofiber/swagger)
项目规范 (Project Conventions)
代码风格
- 语言: Go
- 格式化: 标准
gofmt
- 命名: 变量、函数、类名使用英文
- 注释: 必须使用中文
- 日志: 推荐使用 Zap 结构化日志
架构模式
- 模块化设计: 功能按包分离 (如
cache, config, http, jwt)
- 依赖注入: 使用
Bootstrap 结构体和服务注册模式 (RegisterService, GetService, MustGetServiceTyped) 管理依赖
- 中间件: 大量使用 Fiber 中间件处理横切关注点 (日志, 恢复, 认证等)
- 单例服务: 核心服务 (Config, Cache, Filesystem) 在启动时注册为单例
测试策略
- 使用标准 Go 测试框架 (
testing package)
- 针对各模块进行单元测试
Git 工作流
领域上下文 (Domain Context)
- CMF: 内容管理框架 (Content Management Framework)
- RBAC: 基于角色的访问控制 (使用 Casbin 模型)
- 多租户/域: Casbin 实现支持多域/多租户
重要约束
- 注释: 所有注释和文档应使用中文
- 性能: 高性能目标 (使用 Fiber, BigCache)
外部依赖
- Redis: 分布式缓存和 Redis 存储需要
- 数据库: 持久化需要 MySQL, PostgreSQL 或 SQLite
- S3 兼容存储: 可选的文件存储
目录结构
cmf/
├── bootstrap/ # 应用启动引导
├── cache/ # 缓存模块
├── casbin/ # RBAC 权限控制
├── config/ # 配置管理
├── crypto/ # 加密工具
├── filesystem/ # 文件系统模块
├── http/ # HTTP 相关
├── jwt/ # JWT 认证
├── log/ # 日志模块
├── orm/ # ORM 模块
├── redis/ # Redis 客户端
├── storage/ # 本地存储实现
├── validate/ # 数据验证
├── README.md # 项目说明
├── go.mod # Go 模块定义
└── go.sum # Go 模块校验和
配置
CMF 框架支持多种配置格式,包括 .env 文件和 YAML 格式。请参考 config/ 目录下的相关代码了解详细配置项。
Directories
¶
Package app provides compile-time registration for source feature sets.
|
Package app provides compile-time registration for source feature sets. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Package manager 提供按名称惰性创建实例的通用管理器, 作为 database/cache/redis/filesystem 多驱动切换的统一基座。
|
Package manager 提供按名称惰性创建实例的通用管理器, 作为 database/cache/redis/filesystem 多驱动切换的统一基座。 |
|
|
|
|
|
|
Package queue 基于 asynq 提供任务队列能力。
|
Package queue 基于 asynq 提供任务队列能力。 |
|
|
|
|
|
|
Package sse 提供 Server-Sent Events 通用能力:事件协议、连接管理(Hub)、 一次性凭证(TicketStore)以及 Fiber v3 流式响应封装。
|
Package sse 提供 Server-Sent Events 通用能力:事件协议、连接管理(Hub)、 一次性凭证(TicketStore)以及 Fiber v3 流式响应封装。 |
storage
|
|
|
|
|
|
|
|
Click to show internal directories.
Click to hide internal directories.