可视化布局虽然已经发展很久,但一直没有出现被大量使用的平台或工具,而实际上这类需求确确实实存在,那么,这类可视化布局工具到底有没有价值呢?
我们先来做一个需求。假设现在需要开发一个应用,该应用用于信息录入,分为「客户信息录入页」、「商品信息录入页」、「活动创建页」、「申请培训页」等,每个页面需要用户填写信息。以「申请培训页」为例:
其他页面类似,区别只在于要填写的内容不同。
确认好每个字段的标题、字段名、校验项等等之后就可以开始编码了:
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。