【摸鱼神器】UI库秒变低代码工具——表单篇(二)子控件

手机游戏开发者 2024-9-7 05:14:44 87 0 来自 中国
上一篇先容了表单控件,这一篇先容一下表单内里的各种子控件的封装方式。
重要内容


  • 需求分析
  • 子控件的分类
  • 子控件属性的分类
  • 界说 interface。
  • 界说子控件的的 props。
  • 界说 json 文件。
  • 基于 UI库 进行二次封装,实现依靠 json 渲染。
  • 通过 slot 、 “字典”,实现自界说子控件。
  • 做个工具维护 json 文件。(下篇先容)
需求分析

表单内里须要各种各样的子控件,像文本、数字、选择、日期等常见的需求,可以由内部提供组件解决,但是其他各种“奇希奇怪”的需求怎么办呢?
如果还是由“内部”提供组件的话,那肯定是行不通的,因为以往的履历辅导告诉我们,内部不绝扩充子控件的效果,肯定会导致内部代码越来越痴肥,以至后期无法维护,终极崩盘!
以是必须支持自界说扩展!感谢 Vue 和 UI库,提供根本的技能支持,让扩展变得非常轻易。
我们先对表票据控件进行一下分类,然后为其计划一套接口,即界说一套规则,如许才好方便做长期维护。
子控件的分类

我们对常见的组件进行分析,得到了下面的分类:
上图涵盖了一些常用控件,但是很显然并不全面,比如没有金额类的控件,输入金额也是须要一些辅助的,比如金额的巨细写的切换等,不外这些应该用扩展的方式实现。
属性的分类

组件的分类可以做的“规整”一些,但是组件的属性的分类,就比力有难度了,我们可以把组件须要的属性分为三个重要部门:代码里须要的、共用的、扩展的。

  • 低代码须要的属性
    须要在代码内里使用的属性,比如字段名称、控件范例、默认值、防抖耽误等,会集在一起,通过 props 的方式通报。
  • 共用属性
    各个组件(大概大部门组件)都须要的属性,比如浮动提示、size、是否表现清空按钮等,作为一级属性,通过 props 的方式通报。
  • 扩展属性
    某个组件须要的属性,比如数字组件须要 max、min、step等。通过 $attrs 的方式通报。
此中扩展属性最为复杂,如果按照面向对象的方式来计划的话,布局就会非常复杂,会复杂到什么程度呢?可以参考当初 asp.net 内里 webform 的继承布局:
(controll是控件(组件)的意思,下面分出来WebControll和 repeater 两个子类,然后又,,,算了不说了,是不是看着就很累的样子?)
界说接口

如今是 JS 情况,我们没有须要生搬硬套,而是可以使用JS的机动性来做简便计划:
我们给表票据控件的 props 界说一个interface:(固然暂时用不上)

  • IFormItemProps
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-22 07:15, Processed in 0.171531 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表