可视化布局虽然已经发展很久,但一直没有出现被大量使用的平台或工具,而实际上这类需求确确实实存在,那么,这类可视化布局工具到底有没有价值呢?
我们先来做一个需求。假设现在需要开发一个应用,该应用用于信息录入,分为「客户信息录入页」、「商品信息录入页」、「活动创建页」、「申请培训页」等,每个页面需要用户填写信息。以「申请培训页」为例:
其他页面类似,区别只在于要填写的内容不同。
确认好每个字段的标题、字段名、校验项等等之后就可以开始编码了:
1 | <FormItem {...formItemLayout} label="培训时间"> |
每个字段、甚至每个页面的代码都大同小异,如果是你,是不是已经意识到要做点什么来简化这一「无聊」的工作呢?
- 写一个「基础」模板,复制多个并做调整
- 命令行根据配置项生成代码
- 图形界面通过拖拽生成代码
我更倾向于第三个,所以有了这篇讨论,《可视化布局工具有价值吗?》
什么是可视化布局
先来谈谈什么是可视化布局。
狭义的说,在图形界面,通过交互「堆叠」一些「区块」,即可得到对应的代码。
广义上来说,就是「所见即所得」。
如富文本编辑器,输入文本,调整样式即可生成html代码,该代码可以直接在网页中使用,复现在富文本编辑器中的样式。
而我们最经常使用的bootstrap与antd在某种程度上来说也是「可视化布局」。
bootstrap
对于bootstrap这个项目,有非常多值得谈论的话题,最突出的一点是没有前端基础也能够与jQuery搭配快速搭建中后台应用,深受后端开发的喜爱。
以一个分页来说,只要拷贝对应的代码即可实现指定的样式。
antd
使用antd实现一个分页变得更为简单。
所以呢?
无论bootstrap还是antd,都是要实际写代码的,怎么能说是可视化呢?
但仔细思考,在静态页面的开发上,可以不写代码了,不写CSS代码,写的都是html或者组件代码。
而可视化布局的最终目标,不仅是不写样式代码,html或者组件代码也不用写。
上面提到,antd实现一个分页组件变得更加简单了,因为antd是比bootstrap更高一层的解决方案。
可能在这里用 react-bootstrap 替代 ant design 会更恰当些。
从开发的简单程度来说,可视化要比antd更高一层,是对antd这类组件库使用的简化。从这一点来说,可视化布局是有价值的。
为什么不使用可视化布局
说了这么多,但所谓的「可视化布局」也有很长一段时间的发展了,并没有像antd这类工具普及,是为什么呢?
抛开使用场景谈论一个东西好坏是没有意义的,就好像问antd有用吗,对于没有设计的项目来说,非常有用,而对于有设计的项目来说,价值并没有前者那么大。
可视化布局也是如此,在官网 or 活动页的开发中能起到的作用没有在中后台应用开发中的作用大。
虽然这么说,却也没有听说有成熟的方案能够让我们放心在中后台应用中使用,就好像使用antd一样。会有哪些可能的原因呢?
- 无法满足需求
- 上手难度大(整个工具太复杂)
- 不好迭代(整个生命周期都在工具内管理、页面数据保存在数据库)
这些是我实际遇到的问题,使用过一个这类工具,能够在该工具内完成包括页面搭建到读取数据库的所有操作。经过一段时间的培训后,考试的题目是开发一个请假审批应用,需求如下:
员工可以在线填写请假申请,该申请会被发送到指定主管处审批,三天以内上级领导,超过三天部门领导。主管可选择通过或退回。被退回后员工需要编辑后重新提交。
emmm…
整体来说其实还好,在某些需求下能快速完成开发上线。却不是我想要的工具,怎么样才算一个好用的工具呢?
好用的可视化
首先它只是一个工具,是用来帮助我们简化一部分开发工作。
还是以bootstrap与antd为例,bootstrap通过复制一段代码与引入样式文件,可以快速实现一个美观的组件。在这个过程中,bootstrap的作用是帮助我完成了样式部分的代码,整个过程对于我而言是透明的,我可以随时任意的修改它。
antd相比bootstrap更方便,但也多了更多的限制。比如变得更为复杂,无法随意修改源码等。但它仍然帮助我们完成了将react 组件与ui库整合的工作,否则我们就需要自己写了。
所以理想的工具,是帮助我们完成页面搭建的开发工作,是如果没有这个工具,我们需要自己写的那部分工作。
首先它要可以生产代码,同时它也只需要生产代码。
也许有人会说生成的代码会不会难以维护,还要花时间去做删改,只要删改的时间小于从零开始开发的时间,它就是有价值的。
lego
基于我自己的需求,开发了这样一个简单的工具。从名字来说是希望页面的开发能像搭积木一样简单。
以最开始的「申请培训页」为例,制作了使用该工具实现的过程 gif。