# 为什么造轮子

#### 为什么也用 JSON Schema

- 因为这是现有的一个标准规范，可以用它来描述 JSON 属性结构，所以其实现阶段来描述表单结构信息几乎都是这个，是一种关系表示协议，很像我们平时用 JSON 来表示我们的接口数据一样，后续有计划利用 JSON Schema 做其他场景的渲染引擎
- FormRender 更多的是内部的 filed 处理和类型嵌套、无限遍历、支持跨组件体系这一块才是比较麻烦地方

#### 不用 react-jsonschema-form 的原因？

1. UI 选择：它以 Bootstrap 这一套来做的 UI，目前阿里这边大部分中后台依托于 fusion 或者 antd ，定制 antd 样式开始我也以为很好弄，其实是很麻烦的，Bootstrap 引入其实必要性不大，而且 Mozilla 官方 issue 表示只会考虑这个

2. 配置复杂：从 0 使用到配置出来符合业务方要求所需要的时间会占了你大部分时间，包括中文处理、如何融入到中后台脚手架里面(umi 这种，样式管理处理融入不进去)、组件处理(定制化的组件展示很原始，如时间日历选择、颜色选择)等地方

3. 体验提升方面：有些场景比如图片预览/上传、列表拖拽排序、正则校验、嵌套展示方面这边场景很需要，但...

#### 出于什么点来做的 FormRender ？

1. 当时还尝试了不少方案，几乎都试了一个遍，包括阿里内部的一些解决方案，都比较难达到现有的效果和满足 JSON Schema 规范协议

2. 所以就从 0 开始和好友 @mankaiviky 这边一起来弄了，从代码处理上，底层直接就用 js 来弄的原始的 html 表单( 无 widget 的时候)，然后上层可以无缝使用 Fusion、Antd 组件 Widget

3. 更多向业务现有风格靠，让使用者拿过来 2 分钟安装配置好就可以用，配置尽量少的方式来弄

4. 归纳起来就是：自己场景有很痛的点 -> 然而没有找到已有好实现 -> 自己弄和自己用-> 还可以支持到阿里内部很多部门使用 -> 整理了下文档官网开源出来，让更多人用上
