关于领域模型的总结

关于领域模型

领域特定语言(Domain-Specific Language)的领域模型是DSL的核心组成部分,它定义了特定领域内的对象、属性、关系和约束规则,以形式化方式捕捉该领域的关键概念和结构。‌

为什么需要领域模型

对于开发后台管理系统的同学,一定会对于重复性的业务场景开发工作感到厌烦,好像做了很多工作,却没有实质上的能力提升,总结好像也没有什么亮点,跳槽的时候跟面试官都没有什么好聊的。 领域模型旨在通过对整个站点进行配置描述和解析,通过数据驱动显示,解决80%重复性工作的痛点,同时提升个人的系统架构能力和核心价值。

领域模型的设计特点

  • 通过配置化快速搭建和沉淀大部分功能和组件(下图黄色和蓝色部分)。
  • 保留部分定制化功能。可以嵌入三方页面,也可以手动开发(下图绿色部分)。
  • 可拓展、重载和继承。基于面向对象思想进行开发,所有子类模型继承于基类模型(相同类型的后台系统拥有部分同质化的功能,所以抽离出基类模型概念),子类没有描述的属性直接继承,相同属性进行重载。
  • 低耦合,抽离通用组件,不参与业务逻辑。业务代码通过业务组件作为桥梁连接通用组件,避免污染通用组件。

实现方式

  1. 描述站点结构-描述文档遵循JOSNSchema规范,其中基类model文件包含领域通用配置,project文件则是项目私有配置。描述文件包含菜单、表格以及表格搜索区,还可以描述组件配置,api配置以及数据库操作。schema配置中包含API(遵循RESTfull风格),表格配置,表格操作以及表单搜索项和动态组件。

2.解析配置文件-每个领域的项目可以拆分出不同的配置,通过对配置的解析,生成一个继承后的数据结构,该结构包含对每个站点的描述。

3.处理菜单-当菜单类型为group时,需要递归处理下拉菜单;side表示侧边栏菜单,同样需要递归处理。

4.完成对应页面的组建-当进入对应项目时,通过projectKey来获取指定项目的配置信息,板块的配置分为以下几种情况:

  • moduleType为iframe,解析iframeConfig,显示第三方页面信息。
  • moduleType为custom,读取customConfig,表示开发定制化内容,指向手动开发的页面路由即可。
  • moduleType为schema,解析schemaConfig,调用UseSchemaHooks实现schemaConfig配置的构造,并封装配置提取方法,对表格配置,搜索区域配置等进行独立的配置,以保证数据的清洁度。再调用对应的解析器,实现该板块的构建。
相关推荐
不像程序员的程序媛5 分钟前
Nginx日志切分
服务器·前端·nginx
北原_春希14 分钟前
如何在Vue3项目中引入并使用Echarts图表
前端·javascript·echarts
尽意啊16 分钟前
echarts树图动态添加子节点
前端·javascript·echarts
吃面必吃蒜16 分钟前
echarts 极坐标柱状图 如何定义柱子颜色
前端·javascript·echarts
O_oStayPositive17 分钟前
Vue3使用ECharts
前端·javascript·echarts
竹秋…17 分钟前
echarts自定义tooltip中的内容
前端·javascript·echarts
宝贝露.17 分钟前
Axure引入Echarts图无法正常显示问题
前端·javascript·echarts
shmily麻瓜小菜鸡18 分钟前
前端文字转语音
前端
人良爱编程21 分钟前
Hugo的Stack主题配置记录03-背景虚化-导航栏-Apache ECharts创建地图
前端·javascript·apache·echarts·css3·html5
来颗仙人掌吃吃22 分钟前
解决Echarts设置宽度为100%发现宽度变为100px的问题(Echarts图标宽度自适应问题)
前端·javascript·echarts