DSL领域模型
背景
学习完哲玄《大前端全栈实践》基于vue3完成领域模型架构建设的阶段性总结。
项目设计以及作用
主要目的是为了解决项目中重复业务场景、组件开发,一定程度上摆脱繁重的crud。 可以通过一套配置(模版)生产一个目标项目。
那我们首先需要一个文档结构也就是模版的编写规范,这里使用到的是json-schema。
项目中主要实现了一套dashboard模版,如某淘、某多多、某东每一个都是电商模版下的一个子类,为什么说是子类,因为针对一套模版我们必定是有有一些通用的模块布局、组件等等,就可以通过抽象继承实现复用,产生一个通用基础model子类通过继承去产生一个完整的项目配置。
有了项目配置之后便是项目的解析,项目中电商模块主要是头部菜单菜单对应的主页面,头部菜单可通过配置一项type生产多种页面,已有解析、三方页面、自定义页面等等,也有配置设置侧边栏,以及递归层级支持等等。
整体的目标是通过对于配置的解析快速生产一套可用项目,我们不需要重复的开发业务,而是把时间用在对于模版的维护,重复的业务可以考虑是否有适用的模版,通过修改一些配置或者增加一些配置支持去快速实现项目。
实现
子类继承实现,通过约定在一个model文件夹下新建模板,里面是一个模板和具体的业务配置,在model下新建一个index.js通过glob将文件全部导入,对文件进行继承处理(需要注意的是数组合并),生产出一套复用了模版的配置供以解析模块进行解析.
有了配置之后便是对于对于配置的解析,每一套模版都对应一套解析规则,如dashboard就是根据对配置menu解析生成头部菜单,点击头部菜单显示主页面,主页面展示什么根据配置中的moduleType展示不同页面,模版页面、iframe页面、自定义页面。
后面便可以编写不同的解析模版以适配更多重复的业务。