comp 目录下的代码

comp 目录下的代码

需要的代码

comp 目录下的代码大同小异:

  1. 首先在 model 包定义了 Schema 类型, 底层为 map[strng]any:
type Schema  map[string]any
  1. 组件基本定义
type xxx model.Schema

func XXX() xxx {
  return xxx{"type": "xxx"}
}
  1. 各个属性方法,如:
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
}

怎么生成每个组件的属性方法

  1. 基于百度 amis 仓库 release 的 schema.json 生成
  2. 基于百度 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, 花了周末两天时间做完了转换。