需求背景

通过下发json配置进行客户端的菜单、指标、表头等等类型的配置来进行客户端配置,主要的需求就是将不同配置的类型模板化,然后将这些模板转换成表单供运营人员的配置。

配置模板化

那首先就要将配置模板化。比如一份配置如下

{
	"indicate_id":3001,
	"name": "指标A"
}

那么这份配置就可以抽成

{
  "indicate_id": {
      "type": "number",
      "title": "指标id"
    },
    "name": {
      "type": "string",
      "title": "指标名称"
    }
}

而这份配置用json schema表达的话,长下面这样。

{
  "type": "object",
  "title": "title",
  "properties": {
    "indicate_id": {
      "type": "number",
      "title": "指标id"
    },
    "name": {
      "type": "string",
      "title": "指标名称"
    }
  },
  "required": [
    "indicate_id",
    "name"
  ]
}

json schema其实在可视化接口平台用的很多,比如yapi,postman, apifox里面。上面那份json-schema在yapi里导入后长这样

所以。模板化可以通过json schema进行实现。

模板可视化

那么配置模板化了之后,就要将模板进行可视化了。这样运营人员才知道怎么配这个配置吧。毕竟你要求运营人员去学json,还是比较不切实际的,而且配置过程中可能出现很多问题,比如json格式错误,比如数据错位,数据格式错误等等。那么格式化成什么样呢。

其实最简单的还是把配置格式化成表单,比如下面这样

但是这样不符合我们的需求。因为我们可能会配置嵌套配置

{
	"page_id": 100,
	"page_name": "页面A",
	"indicate_list": [
		"indicate_id": "3000",
		"indicate_name": "指标A"
	]
}

比如这样,如果表单化的话,层级嵌套的就不太行了。后面又想到能不能把配置格式化成树形。点击每个节点展示节点下的基本表单。但是好像前端实现有点难度。所以就在想,不可能只有我们有这种需求吧。所以就开始在网上找。找啊找,还真被我找到一个符合我们需求的编辑器

Json Schema Editor(Antd) - json-schemaeditor-antd (gitee.io)

如上所示,可以支持基础表单,也可以多层级嵌套。而且这个也是可以根据json schema模板进行表单生成,就很完美。

好了。分享到此结束。有兴趣的同学自己去编辑器官网看看。