vue 增强表单组件因地制宜(二)

159 阅读2分钟

主要效果图

效果1 image.png 效果2 image.png

实现有和不同之处

前置

本质的一个问题就是关于父子、插槽传递属性时,父公共属性与子差异化属性的区分集合导致属性 传统的封装为了保证结构化配置、常常弱化标签化操作、保证配置优享的同时、基本放弃或者弱化标签配置 1.支持结构化配置、但对标签化支持较小或不支持、封装性体量太大,或者结构为跨级别属性定义,个性化的属性和公共属性跨级传输,再有就是组件共存性基本没有考虑【比如当前封装配置组件不满足要求时,要自定义花销太大】 image.png image.png

解决了个性化组件跨级传输、轻度封装

公共属性和个性化属性在同一个层级,父组件接受标准参数,个性化传输维持原态传输 image.png image.png

就地取材

一套UI框架本身就具备很多的基础组件、日常的开发基本能够满足,表单工厂的目的在于对布局、样式、一致性调用、结构化调用提供便利、但看过Vue相关的封装,理解不了为什么会带有按钮配置这项操作,而且封装的复杂性和消耗、有点儿得不偿失的感觉 公共控制、个性化组件调用时控制,无需根据文档再重新熟悉属性配置、最主要的是,组件体量和复杂性最小化 将Form,Description,基础组件组合达成目标 image.png image.png

放弃臃肿不合理部分

  • 如Form的非空等验证,可以有简化写法,自动绑定,值获取排空,表单值[]、结构化数据的一致性转换等,
  • 如Description 如有些内容不需要描述时,相应的处理,另外常规的表单+Form实现方式太臃肿
  • 如基础组件的值绑定常常需要初始化转换以及获取后转换如多选的[]->"",再比如[{value:'',lable:''}]都需要存储的情况

一致性

很多封装要么过度,要么牺牲了原本的组件差异化传递,基础组件某些功能得不到有效的调整 下图的封装不是一个良好示范。。 image.png

结构化配置及后续

  • 结构化配置相对较为简单,随后会继续完善
  • 后续会继续完善request相关,内容赋值,值一致性转换 数据加载等处理
  • 完善好表单后,会基础针对查询、页面、内容编辑控制、打开方式等进行处理