三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

beweb目录结构审视

beweb目录结构审视

beweb 目录结构深度审视

整体架构视图

plainText

beweb/ # Web 后端服务主目录 ├── cmd/ # CLI 命令行工具 │ └── beweb/ │ ├── internal/consts/ # 常量定义 │ ├── internal/menu/ # 命令菜单系统 │ └── internal/service/ # 命令服务(代码生成、Git操作等) ├── config/ # 配置文件 │ ├── godi/ # 依赖注入配置模板 │ ├── template/ # 报表/文档模板 │ └── *.yml/json # 数据源、环境配置 ├── data/ # 测试数据与报表 ├── docs/ # Swagger API 文档 ├── docx/ # HTML 文档生成(Node.js) ├── server/ # HTTP 服务器核心 ├── setupweb/ # Web 服务初始化(旧版) ├── webset/ # Web 设置与中间件(新版) ├── webctl/ # 通用控制器层 │ ├── ctlbase/ # 基础控制器 │ ├── ctlcredits/ # 研值/积分/支付 │ ├── ctlplan/ # 训练计划 │ ├── ctlright/ # RBAC 权限 │ ├── ctluser/ # 用户管理(admin/coach/parent/stu) │ ├── ctlword/ # 词汇管理 │ └── ... ├── webwords/ # 单词训练专用控制器 ├── webbiz/ # 业务逻辑层(前后端分离) │ ├── backend/ # 后台管理业务 │ │ ├── beadmin/ # 管理员管理 │ │ ├── becoach/ # 领学师管理 │ │ ├── becredit/ # 研值管理 │ │ ├── bestudent/ # 学员管理 │ │ └── ... │ └── frontend/ # 前端业务(H5/Web) │ ├── feuser/ # 用户前端 │ ├── festudent/ # 学员前端 │ ├── fepay/ # 支付前端 │ └── ... ├── webplat/ # 平台管理模块 │ ├── platbe/ # 平台后台 │ │ ├── platkbase/ # 题库管理 │ │ ├── platimer/ # 定时器管理 │ │ ├── platopc/ # OPC 接口 │ │ └── platsys/ # 系统管理 │ └── platfe/ # 平台前端 ├── webtrial/ # 试训模块 └── uiopc/ # OPC 接口 UI

核心目录职责详解

1. 控制器层(Controller Layer)

目录职责说明
webctl/通用控制器基础 API 控制器,供所有模块复用
webwords/单词训练专注于单词训练与复习业务
webtrial/试训管理试训学员与训练计划管理

2. 业务逻辑层(Business Layer)

目录职责模块数
webbiz/backend/后台管理业务8 个模块
webbiz/frontend/前端业务接口7 个模块

设计模式:前后端分离,通过register.go统一注册路由。

3. 平台管理层(Platform Layer)

目录职责核心功能
webplat/platbe/平台后台题库、定时任务、OPC、系统设置
webplat/platfe/平台前端用户消息等前端接口

4. 基础设施层(Infrastructure)

目录职责
server/HTTP 服务器封装
setupweb/服务初始化(旧)
webset/中间件配置(新)
config/配置管理

设计模式与架构特点

1. 依赖注入模式

所有控制器遵循统一的初始化模式:

plainText

xxx_ctl.go # 控制器实现 xxx_ctl_init.go # 依赖注入注册

2. 模块化注册

通过register.go文件实现模块自动注册,支持:

  • 按需加载
  • 模块解耦
  • 统一管理

3. 分层架构

plainText

┌─────────────────────────────────────┐ │ HTTP Server (server/) │ ├─────────────────────────────────────┤ │ Middleware (webset/) │ ├─────────────────────────────────────┤ │ Controllers (webctl/) │ ├─────────────────────────────────────┤ │ Business Logic (webbiz/) │ ├─────────────────────────────────────┤ │ Platform Services (webplat/) │ └─────────────────────────────────────┘

文件统计与规模

类型数量说明
控制器文件~150业务接口实现
初始化文件~80依赖注入注册
测试文件~20单元测试
配置文件~10环境与数据源配置

架构评估

优点

  1. 职责清晰:按业务领域划分模块,高内聚低耦合
  2. 扩展性强:模块化设计便于新增业务模块
  3. 代码规范:统一的命名和初始化模式
  4. 文档完善:集成 Swagger 自动生成 API 文档

待优化点

问题建议
新旧代码并存合并setupweb/webset/
模块职责重叠整合webctl/ctlword/webwords/
测试覆盖率低补充单元测试,建议 80%+ 覆盖率
node_modules 过大.gitignore排除docx/node_modules

技术栈

分类技术版本
Web 框架Ginv1.10.0
ORMGORMv1.30.0
API 文档Swagv1.16.4
数据库PostgreSQL-
缓存Redis-

总结

beweb 采用分层架构设计,模块职责清晰,遵循 Go 语言最佳实践。项目处于持续演进中(新旧代码并存),建议逐步完成重构,提升代码质量和可维护性。

← 返回列表