2.1 KiB
2.1 KiB
10.1 概述与架构
:::tip 概述 代码生成器内省数据库表结构,一键产出后端四件套、前端页面与 API 模块,并完成菜单创建、字典初始化与路由声明块追加。CLI(cmd/gen)与 Web 界面(tool/generator)双入口,共享同一生成引擎。 :::
生成流水线
① 内省表结构(表/列/索引/注释 → 生成模型)
↓
② 模板渲染(templates/*.tpl + 表模型 → 产物文本)
↓
③ 幂等落盘(generator.overwrite 控制覆盖/跳过)
↓
④ 副作用(幂等创建菜单行 + 字典初始化 + router.go 追加 Bind 声明块)
产物清单
| 类别 | 内容 |
|---|---|
| 后端四件套 | internal/model/dto、repository、service、handler 下 {模块}.go |
| 路由声明 | router.go 的 Bind 声明块(自动追加) |
| 前端 | api 模块 + views 页面(index/edit/detail/columns/querySchemas;树形表走 ui2 模板) |
| 菜单 | 页面菜单 + 权限节点(幂等创建,挂 generator.parentMenuId) |
| 字典 | 按枚举列初始化字典与字典项 |
两个入口
| 入口 | 场景 | 说明 |
|---|---|---|
| CLI(make gen) | 本地开发、批处理 | `go run ./cmd/gen -tables "表名 |
| Web(tool/generator) | 可视化挑选表、预览后生成 | 内置表列表查询、代码预览、批量生成 |
覆盖策略
generator.overwrite:
true:全部产物覆盖重新生成(模板变更后同步)false:缺失补生成、存在跳过(保护手写内容,默认安全档)
生成结果分类呈现:generated(新建)/ skipped(跳过)/ overwritten(覆盖)/ failed(失败)。
安全开关
生成器具备写服务器源码能力——generator.enable=false 时路由整体不注册;生产模式(app.prod=true)拒绝未关闭的生成器。
学习建议
先读 第 3 章 模块开发实战 理解手工四件套,再回来用生成器——你能看懂每一行产物,也知道改哪里。