comp 目录下的代码
需要的代码
comp 目录下的代码大同小异:
- 首先在 model 包定义了 Schema 类型, 底层为 map[strng]any:
type Schema map[string]any
- 组件基本定义
type xxx model.Schema
func XXX() xxx {
return xxx{"type": "xxx"}
}
- 各个属性方法,如:
func (x xxx) Title(value string) xxx {
return x.set("title", value)
}
...
其中的辅助方法 set 如下:
func (x xxx) set(key string, value any) xxx {
x[key] = value
return x
}
怎么生成每个组件的属性方法
- 基于百度 amis 仓库 release 的 schema.json 生成
- 基于百度 amis API 文档生成
可惜,#1 尝试了很多工具都失败了;#2 又非常耗费时间,要知道 amis 有一百多个组件, Api 文档又不是非常规范,很难写工具自动转换代码。
这个问题专门在 amis 仓库提了 issue:https://github.com/baidu/amis/issues/10760
最终比较费劲地完成了这个任务:发现 php 项目 https://github.com/slowlyo/owl-admin/blob/master/src/Renderers ,里边定义了大多数 amis 的组件,基于该项目,借助 chat-gpt, 花了周末两天时间做完了转换。