Files
easygoadmin-wiki/EasyGoAdmin_GoFrame_EleVue/zh/generator/overview.md
T
2026-10-20 21:19:44 +08:00

94 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 10.1 概述与架构
:::tip 概述
代码生成器根据表结构一键产出前后端全套文件,并同步创建菜单、权限节点、字典数据、路由注册行(全部幂等)。双入口:HTTP(管理页面)与 CLI(cmd/generator)。核心在 internal/logic/generator.go + generator_side.go。
:::
## 定位
```text
输入:表名列表("表名|注释")
产出:
后端八件套(api/controller/logic/service + dao index/internal + entity + do)
前端文件(api/{域}/{模块}.ts + views/{域}/{模块}/ 五件或三件)
幂等副作用:菜单 + 权限节点 + 字典 + router.go 注册行
约束:生成的 logic 是 ModuleSpec 基座风格的完整可用实现,
go build 后即可运行;复杂业务再手工扩展钩子
```
## 双入口
```text
HTTP(/api/generator,管理页面"代码生成"):
GET /api/generator/page sys:generator:page 数据表清单(分页)
POST /api/generator/preview sys:generator:generator 预览(不落盘)
POST /api/generator/generate sys:generator:generator 一键生成
POST /api/generator/batchGenerate sys:generator:batchGenerator 批量生成
日志 logType=generate(19 代码生成)
CLI(仓库根目录,读同一份 config.yaml):
go run ./cmd/generator -tables "goframe_example|案例演示表"
CLI 空白 import internal/logic 注册全部服务,直接调用 service.Generator()
```
## 总体流水线
```text
输入 tables[]("表名|注释")
│
▼
buildVars:TableFields 内省 → 类型/注释解析 → 字段分桶(列表/表单/筛选)
│ 命名:module/Pascal/camelLower;域归属;ui|ui2 模板类型
▼
skipTables? ──是(role_menu/user_role)──▶ 仅 buildVars(副作用用),跳过文件
│ 否
▼
renderTable:逐模板渲染(后端 {{ }} / 前端 [[ ]])→ go 产物 gofmt
│
▼
writeFile×N(四态:新写/跳过/覆盖/失败)
│
▼
副作用(幂等):createMenu(+权限节点) → createDict(枚举字段) → registerRouter
│
▼
结果报告(Generated/Skipped/Overwritten/Failed + Menu/Dict/Route)
│
▼
提示:go build ./... 并重启服务
```
## 域归属与模板类型
```text
genDomainMap 域归属(决定前端 api/views 目录):
user/role/menu/dept/level/position/tenant → system
config/param/dict/notice/city → data
article/category/link → content
operation_log/login_log/job/… → monitor
example/file_template/… → tool(默认)
模板类型:有 parent_id/pid 列 → ui2(树形模板),否则 ui(普通列表模板)
排序默认:有 sort 列 → "sort asc",否则 "id desc"
```
## 与 gf gen dao 的分工
| 工具 | 用途 |
|------|------|
| `gf gen dao -c hack/config.yaml` | **表结构变更**后刷新已有模块 dao(自定义模板挂钩子+Ctx;overwriteDao:false 保留手工扩展) |
| 生成器 | **新模块**一键产出(dao 四件与 gf gen dao 同构,生成后统一 gofmt 可直接编译) |
| `gf gen service` | **禁止整体运行**(service 接口为手工重组维护) |
## 保护策略速览
```text
skipTables:仅关联表 role_menu/user_role 整表跳过文件生成
(副作用照常执行)
文件粒度四态:缺失补生成(Generated)/ 已存在跳过(Skipped)
/ 开覆盖时覆盖(Overwritten)/ 失败(Failed)
覆盖开关唯一入口:generator.overwrite(config.yaml)
```
详见 [10.5 代码生成引擎](./code-engine) 与 [10.7 配置文件详解](./config)。