elipis 基于领域模型[DSL]的设计与解析

114 阅读1分钟

学习来源:抖音“哲玄前端”《大前端全栈实践》

从配置到渲染流程

领域模型(基类)->project子类继承->BFF层处理->模版引擎解析->页面渲染。 image.png

领域模型 (基类)

DSL (Domain Specific Language,领域特定语言 )

个人描述:面向对象思想,使用一套数据描述规范(本项目使用json-schema),对同类型系统的80%页面和业务的抽象。进行结构化描述。 剩余的20%则在子类project中进行描述。最后通过子类继承父类来描述一套完整的系统

模版解析(基于项目)

可以实现以下逻辑的基础是严格按照约定的领域模型进行json-schema描述

利用lodash的mergeWith方法并对数组合并进行特殊处理+递归方法 对模版基类与子类合并
BFF层处理,server,router-schema,router,controll...
不同的解析器解析对应type模版,进行页面展示 和数据展示

image.png

学习总结

  1. 模版数据的定义一定要考虑继承性。这个模型设计思想完全适用于低代码平台。
  2. 组件的封装只展示数据,不进行具体业务的实现。且要对业务组件和公共组件进行明确划分,有利于项目维护。
  3. v-bind 属性透传,大大的方便对组件库二次封装时组件原有属性传递问题
  4. 学习到了项目文件结构,每个模块都在独立的文件夹内。
  5. 当一个参数需要多个方法中传递时尽可能采取其他方法。