以往项目复杂度
以往项目时间周期
以往项目架构
新项目复杂度
新项目时间周期
保持架构 / 升级架构
低代码平台
开发者的新“范式”
低代码core
非开发者的开发能力
GUI化
新产品
新需求
活动H5
调查表单
可视化报表
整站(越来越少)
表单组件的硬编码组合
表单逻辑收口
表单组件的硬编码组合
传统方案
简单封装
配置驱动的表单组件
使用插件
配置驱动的表单组件
配置驱动
配置化&插件化
GUI
配置化&插件化
平台化
在crm中,前端最适合做低代码的领域是FORM&LIST,绝大部分的实体内部业务&实体间关联也发生在此。低代码是crm技术升级的核心。
配置化&插件化在crm中是渐进式的,字段的形态都是从特殊到普遍的过程,等字段再从元信息层面支持。避免提前过度抽象。
配置化&插件化在crm中是分层使用的,可以直接使用插件,或者选择性的不使用元信息。
FORM&LIST在crm中是交互收口的,以FORM为例对于用户对所有字段的变更(onChange)交互(onInteract),都可以通过单个回调把控,使逻辑内聚
FORM&LIST在crm中形成了一个最小模版,实现了基础的CRUD,通过copy最小模版并进行二次开发可快速实现新的业务
通过修改插件配置,可以实现表单内部字段逻辑联动,面对类似需求,采用相似的形式即可
通过元信息中字段的配置,描述了这个字段是用来做实体间关联的。前端将元信息配置翻译成插件配置,实现渲染。
EDITOR
结构化数据+存储
DSL
RUNTIME lib
GUI其他服务
PARSER
GUI低代码平台
(产物:DSL)
RUNTIME
EDITOR
结构化数据+存储
DSL
COMPILE lib
RUNTIME lib
GUI其他服务
PARSER
GUI低代码平台
(产物:结构化数据)
RUNTIME
CI/CD/其他编译服务
(产物:运行时代码)
业务组件的依赖要尽可能简单,在crm中大部分业务组件仅依赖其业务store,单一依赖原则满足实体间的灵活引用,实体间派生更简单
通用的业务组件不适配任何业务员store,仅对业务store提出需求,业务store需自行实现interface,以适配业务组件
业务store
提取参数
业务store
通用业务组件
通用业务组件
其实传统的业务组件也未尝不是依赖倒置,只不过中间透一层,在某种场景下不必要
在crm中无需提取参数,直接让store满足interface即可,改动不大,但量变产生质变。贯穿整个crm的开发,收益不小。
特殊到普遍的渐进式抽象在这里仍然适用,不是所有的通用组件一开始都是通用组件,Avoid Hasty Abstractions。先实现的单一依赖,后来发现普遍性很好再做依赖倒置。
当线索被创建的时候,除了对线索本身产生影响,在服务端, 也有可能对其他模块产生了副作用 ,前端需要对所有副作用有所响应。常规方案中,需要显式的调用一些刷新回调来展示副作用后的最新数据。不过在crm系统越来越复杂之后,发现这种方式有很大的缺点:
一个实例则是一个图状网络的单点,在具体业务中,我们需要描述:
对于上面的模块B,需要先描述对A,B副作用的响应:
以及对于自己的副作用,哪些模块需要响应:
这样B的入边和出边就描述好了,看看运行时的case: