56 lines
2.1 KiB
Markdown
56 lines
2.1 KiB
Markdown
# 10.1 概述与架构
|
||
|
||
:::tip 概述
|
||
代码生成器内省数据库表结构,一键产出后端四件套、前端页面与 API 模块,并完成菜单创建、字典初始化与路由声明块追加。CLI(cmd/gen)与 Web 界面(tool/generator)双入口,共享同一生成引擎。
|
||
:::
|
||
|
||
## 生成流水线
|
||
|
||
```text
|
||
① 内省表结构(表/列/索引/注释 → 生成模型)
|
||
↓
|
||
② 模板渲染(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 章 模块开发实战](/zh/guide/overview.html) 理解手工四件套,再回来用生成器——你能看懂每一行产物,也知道改哪里。
|
||
|
||
## 下一步
|
||
|
||
→ [10.2 CLI 命令行使用](/zh/generator/cli.html)
|