开发低代码产品的准备工作有哪些?

145 阅读5分钟

灵感从何而来

灵感大多来自于日常工作中

我司不同部门的项目大多有些共性,比如,都是面向内部人员使用,都有一种maker角色需要填各种复杂的表单,都有一种checker角色需要查看各种条目,都有一种审批流程是maker做完了之后,checker来检查。

当然每个项目都有它的独特性,但大多数用户都会希望能在页面上编辑条目就像用excel一样,并且可以自定义报表就像tableau一样。

我司也有人才辈出,会有一类拖拽搭建UI界面的低代码平台的创新项目,不过这在我看来是比较表面的,因为这一类低代码只是节省了部分前端画页面的时间,而项目的大头并不在于前端画页面,而是用户如何通过GUI与数据交互。所以我想尝试从不同的角度出发,做一个贴合业务场景的低代码。

我对低代码的了解

贴合业务场景的低代码产品,市面上其实也数不胜数,其实就是SaaS,比如做销售的会用到salesforce,做客户经理的会用到agileCrm,做电商的会用到ERP。很庆幸我之前多年在电商公司,深度接触过ERP,它也是提供一个又一个模块,比如给用户输入产品信息,输入采购订单,输入库存信息,输入客户信息,输入销售订单,输入物流信息等等,查询模块也可以高度定制化,每一个关键节点也可以设置发送通知,像这样一个大型的ERP,我接触过的比如NetSuite和SAP,企业采用这类ERP,是需要专门请顾问来实施方案的。

我的目标拆分

对应到我司,我可以把使用我们项目的人当成一个电商公司里的员工,而实施解决方案的顾问就是对接用户的需求分析师(BA),而我要做的,就是把这个可配置的SaaS做出来。Saas的规模有大有小,大到ERP,或者轻量级的比如帆软的简道云,小到一个调查问卷小程序,只要是原先需要一个开发团队来开发,而后来变成通过低代码或无代码配置的,都可以称之为低代码。

而我目前单枪匹马,精力有限,肯定是做不了那种大型低代码了,所以我决定做一个简易的用户友好的增删改查的平台,这个平台可以是小而美的,又刚好可以适用于我们公司的许多业务。根据业务需求,我把我的理想低代码需要满足的功能分为了三大类,一类是输入数据,也就是表单,需要足够支持极端复杂的情况;一类是数据的展示,可以是表格,可以是图表,用户也可以自定义报表,目前我的计划是能把BI工具(如Tableau)集成到前端界面上就好,没有必要单独开发;最后一类是流程权限的配置,比如什么角色可以做什么行为,而什么行为会让整个业务主体往哪个流程中推进。

从表单可配置化开始

合抱之木,生于毫末;九层之台,起于累土

结合我工作中大量的时间都是在开发表单,我决定从第一类表单的可配置化开始。做一个与众不同的表单库,可以把公司遇到的业务场景全部包括进来。考虑到每个组的技术选型不一样,有的用React,有的用Angular,甚至有的用ExtJS或plain JS,对于组件库,有的选用公司内部的自研组件库,有的用Material(MUI),有的用PrimeNG,我需要做一个库能兼容不同框架和UI组件库。幸运的是我发现了这本书《现代JavaScript库开发》(颜海镜),我会一边读这本书,一边做总结,在了解了原理机制后,我目前总结出以下三种方式开发组件库。

开发方案

  1. 一个一个手写。用每个框架结合每个组件库,分别手写一套,在我司,至少要写6套。如果有个别组用了其他的库,那工作量数不胜数。

    ReactJSAngularExtJS/Plain JS
    MUI/Material
    公司自研组件库
  2. 写Web component。就如微前端的原理一样,不同的框架之所以可以融合在一个页面上,是因为转换成了web component,那么如果我写的就是web component库,不就可以直接用在不同的框架中了嘛?目前web component框架也有以下两个比较流行,最终应该是能实现的。

    svelte.JPG

    stencil.JPG

  3. Mitosis。如果说React或Svelte这种框架开发是在运行时,那么Mitosis是在编译时,用Mitosis写完代码后可以选择编译成React或Angular或Svelte等,这样也能实现一次开发,多框架通用,想法比较新颖,目前文档较少,Mitosis作者也承认某些专属于某种框架的的特性,比如React的自定义hook,无法实现。Mitosis是builder.io的框架,builder.io是一个非常高级的拖拽搭建型的低代码开发平台,Mitosis是用来开发库的库,也很符合他们的目标。

方案选择

我不确定选方案2还是方案3,由于Mitosis惊艳到我了,我就尝试探索一下Mitosis吧,先做一个简单的组件库发布出来看看效果如果。点击这里了解我对Mitosis的探索