在前端开发的工作当中,表单的开发占据了很大的一部分。表单页面和报表页面是中后台业务的主要展现形式,但随着业务越来越复杂,表单开发和维护成为了前端工程师一个无法逃避的痛点。
目前的表单开发主要存在的问题有以下几点表单状态管理随业务复杂度增加变得越来越难以维护,需要引入状态管理库
传统表单开发的数据结构往往都是扁平结构,没法很好的处理嵌套复杂数据的情况, 如果要处理,工作量会非常大
当业务有动态输出表单的需求的时候,不得不自己开发一个基于某种数据协议的动态输出表单的组件
当业务需要在可视化界面配置产出表单时,需要自己开发一个基于json的动态输出表单组件
解决方案基于以上问题的探索,以及受到UForm的启发,研发了VSchemaForm的Vue表单解决方案:使用json描述表单内容
支持多平台(移动端和桌面端)
支持多个组件库(Element UI、Ant Design Vue、Antd Mobile Vue)
支持嵌套表单
支持任意数据的数组解构
支持复杂布局
支持副作用函数,统一处理表单内各项的数据联动
支持解构数据,减少自定义的数据转换
支持表单校验
使用JSON描述表单
{
fields: {
card: {
type: 'card',
props: {
title: '基本信息'
},
fields: {
basic: {
type: 'ob