DSL框架领域模型架构设计

98 阅读2分钟

  该框架的设计理念是提供给客户沉淀大部分的重复性工作如增删改查的能力,让使用者可以集中精力去完成定制化的部分,多人协同并快速输出多种多样的产品。围绕 DSL 模型驱动的设计理念,通过描述一份严格遵守 JSON Schema 规范 的 schema 数据,可自动生成多个包括数据库表单、页面渲染、api接口、文档、测试用例和 ajv 校验 ...的完整站点;同时,在原有 schema 基础上,新增配置并开发解析引擎即可在框架上拓展融合新的功能板块。该框架适合需要高度定制、轻量、快速开发的中后台管理系统、前后端分离项目,适合团队自研、快速试错、灵活扩展。

  DSL 全称 Domain-Specific Language(领域专用语言)。 下面以电商中后台管理系统来举例说明,在这个项目里 DSL 是指结构化配置(schema + menu)描述特定业务界面与行为的领域专用描述语言。

一、摘要

  • DSL 描述中后台页面(菜单、字段、查询、表格、按钮),具体流程是 project 下的各个项目配置,集成、重载和合并最上层的领域模型配置 model ,最终生成一份数据描述表。经过页面模板引擎解释执行生成页面。支持项目差异覆盖与快速上线,后续迭代维护和升级。

二、总体架构

  • 前端:模型渲染引擎(动态组件映射)、统一请求(common/curl,md5+时间戳签名)。
  • 后端:聚合器(对象深合并+数组按 key 合并)、JSON Schema 契约校验。
  • 存储:可扩展数据库版本化。

三、DSL 核心

  • 模型:model(key,name,menu)。
  • 合并规则:对象深合并;数组按 key 对齐递归合并;无 key 数组用右侧覆盖。

四、渲染机制

  • 搜索条:v-for 遍历 properties → comType→组件映射;子组件 defineExpose(getValue/reset/loaded),父组件聚合参数并首查。
  • 表格:字段 tableOption 自动列化,按钮由 tableConfig 注入;异常隔离与空值过滤。

五、结论

  • 以 DSL 为中心的模型驱动方案在项目中可实现“改模型即上线”,统一交互与行为,显著降低开发与维护成本,并为后续物料化与版本治理奠定基础。