meta元数据+model模型的数据驱动低代码lowcode

229 阅读2分钟

最近都在使用低代码lowcode进行开发,所以抽出一些时间研究分析一下实现原理,本文探讨以下几点:

  1. 低代码的优势
  2. 低代码框架可以具体实现哪些功能
  3. meta元数据+model模型,数据驱动实现原理

本文只记录研究方向,不讲具体实现(方法命名都比较随意)

优势

提高效率,提高质量,降低成本, 风格统一,统一维护,快速响应, 适用场景:tob系统大量重复业务(审批流)

功能点

  • excel设计单据,设计器转换成meta元数据
  • 前后端一体mvvm框架,生成显示标准化页面,支持扩展开发
  • 高级ui模板,产品对外提供修改元数据功能,拖拉拽满足个性化需求

meta+model mvvm框架的实现

流程机制(仅供参考)

截屏2022-09-13 下午11.18.20.png

如何获取初始化数据

点击菜单之后会触发render函数,首先生成一个初始化组件dynamicView,之后会调用一个初始化页面模版的方法,根据单据的id和billnum等参数发起fetchmeta请求,接口返回json格式meta数据

模型驱动(meta如何变成viewmodel)

页面从大到小整个单据到具体每一个item组件每一个部分都是一个viewmodel,每个viewmodel都是一个model实例,model可以分为contantModel,baseModel,gridModel,listModel,simpleModel等等,前端获得到meta数据后会遍历根据数据类型new一个不同类型的model将这些model根据所属结构拼接成一个树就得到了viewmodel,之后parsecontent方法解析container,list或者item组件在根据controltype在不同统一react组件的render函数中返回并渲染到页面上

组件双向绑定

  1. 在组件的componentDidmounted钩子函数中,将viewmodel绑定到ui组件
  2. 修改viewmodel更新ui(例如viewmodel改变state就会触发更新函数)
  3. 修改ui更新viewmodel(例如组件失焦事件通知viewmodel)

事件监听

监听:on(name,callback),将callback推入events事件队列
事件触发:excute(name,args),从events事件中执行name方法