# 模板配置
Bee生成代码分为数据解析、加载模板、生成文件三个部分。我们可以根据bee的数据解析schema,定义各种组件模板。目前官方模板配置存放于https://github.com/beego/beego-pro。如果你觉得官方模板不方便使用,你可以将官方模板fork到你的仓库,然后更改该模板。将beegopro.toml里的gitRemotePath里填入你{fork github git}地址。
# 项目结构
├── ant4
│ ├── bee.toml
│ └── tmpl
│ ├── bee_default_controller.go.tmpl
│ ├── bee_default_model.go.tmpl
│ ├── controller.go.tmpl
│ ├── create.tsx.tmpl
│ ├── down.sql.tmpl
│ ├── formconfig.tsx.tmpl
│ ├── info.tsx.tmpl
│ ├── list.tsx.tmpl
│ ├── model.go.tmpl
│ ├── router.go.tmpl
│ ├── update.tsx.tmpl
│ └── up.sql.tmpl
├── default
│ ├── bee.toml
│ └── tmpl
│ ├── bee_default_controller.go.tmpl
│ ├── bee_default_model.go.tmpl
│ ├── controller.go.tmpl
│ ├── down.sql.tmpl
│ ├── model.go.tmpl
│ ├── router.go.tmpl
│ └── up.sql.tmpl
├── LICENSE
└── README.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 类型
类型是用户配置beegopro.toml里proType类型的值。在这里对应了beego-pro里的项目名称。用户可以填不同的proType,选择官方的不同类型的模板。
# 模板描述文件
每个目录里有个bee.toml,用于描述模板的目录、模块、生成目录、执行钩子等,如下所示
renderPath = "tmpl"
[[descriptor]]
module = "controllers"
srcName = "bee_default_controller.go.tmpl"
dstPath = "{{pathBeego}}/controllers/bee_default_controller.go"
once = true
[[descriptor]]
module = "controllers"
srcName = "controller.go.tmpl"
dstPath = "{{pathBeego}}/controllers/{{modelName}}.go"
[[descriptor]]
module = "models"
srcName = "bee_default_model.go.tmpl"
dstPath = "{{pathBeego}}/models/bee_default_model.go"
once = true
[[descriptor]]
module = "models"
srcName = "model.go.tmpl"
dstPath = "{{pathBeego}}/models/{{modelName}}.go"
[[descriptor]]
module = "routers"
srcName = "router.go.tmpl"
dstPath = "{{pathBeego}}/routers/{{modelName}}.go"
[[descriptor]]
module = "antList"
srcName = "list.tsx.tmpl"
dstPath = "{{pathAnt}}/{{modelName}}/list.tsx"
[[descriptor]]
module = "antForm"
srcName = "formconfig.tsx.tmpl"
dstPath = "{{pathAnt}}/{{modelName}}/formconfig.tsx"
[[descriptor]]
module = "antCreate"
srcName = "create.tsx.tmpl"
dstPath = "{{pathAnt}}/{{modelName}}/create.tsx"
[[descriptor]]
module = "antUpdate"
srcName = "update.tsx.tmpl"
dstPath = "{{pathAnt}}/{{modelName}}/update.tsx"
[[descriptor]]
module = "antInfo"
srcName = "info.tsx.tmpl"
dstPath = "{{pathAnt}}/{{modelName}}/info.tsx"
[[descriptor]]
module = "antUp"
srcName = "up.sql.tmpl"
dstPath = "{{pathBeego}}/sql/{{modelName}}_up.sql"
script = "bee pro migration --sql={{pathBeego}}/sql/{{modelName}}_up.sql"
[[descriptor]]
module = "antDown"
srcName = "down.sql.tmpl"
dstPath = "{{pathBeego}}/sql/{{modelName}}_down.sql"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
- renderPath 渲染的模板目录
- descriptor 描述文件
- module 模块名
- srcName 模板文件名
- dstPath 生成文集路径
- once 是否只执行一次
- script 执行钩子
# 模板语法参考pongo2
# 模板变量
- path{PathName} PathName生成路径,例如pathBeego代表beego的目录路径
- packageName 包名
- packageImports 引入包名
- packagePath 当前模板包路径
- packageMod 项目包路径
- modelName 模型名称
- modelSchemas 模型数组结构体
- modelPrimaryKey 模型主键
- apiPrefix api前缀
- generateTime 生成时间
# ModelSchemas
- Name 名称
- Comment 中文名称
- GoType 数据类型
- InputType
- MysqlType
- ColumnKey
- OrmTag
- Extend
# 方法
- lowerFirst 首字母小写
- upperFirst 首字母大写
- snakeString 蛇形
- camelString 驼峰
# 自己模板示例
掌握上述数据结构,就可以定义自己的模板了。更期待你给官方提pr,添加新的模板https://github.com/beego/beego-pro
# 定义结构体
type {{modelName|upperFirst}} struct {
{% for value in modelSchemas %}{{value.Name|camelString}} {{value.GoType}} ` {% if value.OrmTag != "" %}orm:"{{value.OrmTag}}"{% endif %}json:"{{value.Name|camelString|lowerFirst}}" form:"{{value.Name|camelString|lowerFirst}}"` // {{value.Comment}}
{% endfor %}
}
1
2
3
4
2
3
4
# 定义router
beego.Router("{{apiPrefix}}/{{modelName}}", &controllers.{{modelName|upperFirst}}Controller{}, "get:GetAll")
1
2
2
← 用户配置