签入版本
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
# 10.6 模板开发
|
||||
|
||||
:::tip 概述
|
||||
生成器模板在 templates/ 磁盘目录:后端模板用 Go text/template 默认 {{ }} 定界;前端模板因与 Vue 插值冲突改用 [[ ]] 定界。修改模板即改变生成产物风格。
|
||||
:::
|
||||
|
||||
## 模板清单
|
||||
|
||||
```text
|
||||
templates/
|
||||
├── api.tpl api/v1/{module}.go
|
||||
├── controller.tpl internal/controller/{module}.go
|
||||
├── logic.tpl internal/logic/{module}.go(ModuleSpec 基座风格)
|
||||
├── service.tpl internal/service/{module}.go(接口三件套)
|
||||
├── dao_index.tpl internal/dao/{module}.go(挂钩子+Ctx 覆写)
|
||||
├── dao_internal.tpl internal/dao/internal/{module}.go
|
||||
├── entity.tpl internal/model/entity/{module}.go
|
||||
├── do.tpl internal/model/do/{module}.go
|
||||
├── ui/ 前端普通模板(定界符 [[ ]])
|
||||
│ ├── api.ts.tpl
|
||||
│ ├── columns.ts.tpl
|
||||
│ ├── querySchemas.ts.tpl
|
||||
│ ├── index.vue.tpl
|
||||
│ ├── edit.vue.tpl
|
||||
│ └── detail.vue.tpl
|
||||
└── ui2/ 前端树形模板(无 columns/querySchemas)
|
||||
├── api.ts.tpl index.vue.tpl edit.vue.tpl detail.vue.tpl
|
||||
```
|
||||
|
||||
## 两套定界符(关键差异)
|
||||
|
||||
| 模板 | 定界符 | 原因 |
|
||||
|------|--------|------|
|
||||
| 后端 *.tpl | `{{ }}`(Go text/template 默认) | 无冲突 |
|
||||
| templates/ui* | `[[ ]]`(Delims("[[","]]")) | Vue 模板插值也是 {{ }},会冲突 |
|
||||
|
||||
```text
|
||||
后端模板片段:{{.Module}} {{range .Fields}}…
|
||||
前端模板片段:[[.Module]] [[range .Fields]]… ← 生成后再渲染为 Vue 的 {{ }}
|
||||
```
|
||||
|
||||
## 模板函数
|
||||
|
||||
```text
|
||||
containsAny 字符串包含任一子串(字段分类判定)
|
||||
isUrlField URL 列名判定(website/site/url/link 不作模糊筛选)
|
||||
(其余上下文:buildVars 产出的 module/Pascal/Fields/Choices/HasStatus…)
|
||||
```
|
||||
|
||||
## 修改模板的流程
|
||||
|
||||
```text
|
||||
1. 编辑 templates/*.tpl(保持定界符约定)
|
||||
2. 用 -preview 预览渲染结果(不落盘核对)
|
||||
3. 生成样例表验证(建议用 example 表回归对比)
|
||||
4. go build 检查产物可编译
|
||||
5. 注意:overwrite=false 时已存在文件不会更新——
|
||||
验证用新表或临时开 overwrite
|
||||
```
|
||||
|
||||
## 与其他"模板"的区分
|
||||
|
||||
::: warning 两套模板互不相干
|
||||
+ `templates/*.tpl`(本节)= 代码生成器渲染模板,随仓库版本管理
|
||||
+ `goframe_file_template` 表 = 业务功能(在线管理文件/代码片段模板)
|
||||
|
||||
修改生成产物风格改 templates/*.tpl;不要去 file_template 表里找。
|
||||
:::
|
||||
|
||||
## 定制建议
|
||||
|
||||
+ 团队规范(注释风格/方法命名)可改进模板一次、全组受益
|
||||
+ 新增生成字段类型(如开关列特殊渲染)改 buildVars + 模板两侧
|
||||
+ 模板变更走版本管理 + 团队评审(影响所有新生成模块)
|
||||
+ 已生成模块不会随模板更新(除非 overwrite 重生成并人工合并)
|
||||
+ hack/tpl/dao_index.tpl 是 gf gen dao 的自定义模板(与生成器模板同构但独立)——改一处需评估另一处
|
||||
Reference in New Issue
Block a user