关于Elpis全栈框架,DSL模版引擎的一些个人思考

关于Elpis全栈框架,DSL模版引擎的一些个人思考

现阶段,大部分前端程序员的工作内容都比较枯燥,且进行一些无意义的苦力劳动,如下:

1.工作中大部分工作是重复性的CRUD 2.项目中存在大量的屎山代码,代码维护性差 3.代码程序逻辑性差,看起来很难理解

在Elpis中,将咱们程序员现阶段存在的一些痛点,进行的了整合,利用DSL领域模型,将沉淀当下程序员80%的重复性工作,将开发的精力放在20%的可扩展性的开发工作中。

关于DSL的设计

1.在elpis项目中,DSL模版引擎的一些基础配置,配置如图:

module.exports 复制代码
      model: '', //模版类型,不同模版类型对应不一样的模版数据结构
      name: '',//模版名称
      desc:'',//模版描述
      icon:'',//模版图标
      menu: [
         {
          key: '', //菜单唯一标识
          name: '',//菜单名称
          menuType: '',//菜单类型,枚举值:group / module
          moduleType: '',// 枚举值:sider/iframe/custom/schema
          },...]
       }

通过图中的模版配置,完成对页面的基础配置。 2.在完成对项目的基础配置之后,需要大模块下的小模块进行更细致的配置操作: (1)当menuType为group的时候,会在当前菜单下产生子菜单,这里就需要递归去获取当前菜 单下的所有的子菜单进行展示

ini 复制代码
//当 menuType === group 时,可填
subMenu: [{
// 可递归 menuItem
          }],

(2)当moduleType为schema时,说明这部分为咱们需要沉淀的80%的功能,在elpis项目中通过利用《JSON-SCHEMA》工具完成相对应的配置:

go 复制代码
//当 moduleType === schema 时

schemaConfig: {

api:'',//数据源API(遵循 RESTFUL 规范)

schema:{//板块数据结构

type:'object',

properties:{

key:{

...schema,//标准 scheam 配置

type:'',//字段类型

label:'',//字段中文名

//字段在 table-bar 中的配置

tableOption:{

...elTableColumnConfig,//标准 el-table-column 配置

toFixed:0,//保留几位小数

visiable:true,//默认为true(false时,表示不再表单中显示)

},//字段在 table中的相关配置

//字段在 search-bar 中的配置

searchOption:{

...elComponentConfig,//标准 el-form 配置

comType:'',//配置组件类型

default:'',//默认值
//comType === 'select'

enumList:[],

//comType === 'dynamicSelect'

api:''

}

}

}

},

tableConfig: {

headerButtons:[{

label:'',//按钮中文名

eventKey:'',//按钮事件名

eventOption:{},//按钮事件具体配置

...elButtonConfig //标准 el-button配置

},{}],//可以多个配置

rowButtons:[{

label:'',//按钮中文名

eventKey:'',//按钮事件名

eventOption:{

//当 eventKey === 'remove'

params:{

//paramKey = 参数的键值

//rowValueKey = 参数值,格式为schema::tableKey ,到table 中找相应的字段

paramKey:rowValueKey

}

},//按钮事件具体配置

...elButtonConfig //标准 el-button配置

},{}],//可以多个配置

},//table 相关配置
searchConfig:{},//search-bar相关配置

在这里可以看到,在elpis项目中,我们并不是去对每一个页面的各种组件,例如:table,searchBar组件等在每个页面进行重复性的开发,而是将各种组件进行了一个抽象的模版定义,这样我们可以通过对DSL模版引擎的配置,就可以完成对不同菜单下一些重复性的CURD工作就行耦合和沉淀,这样也让代码的可维护性提高。

总结

在elpis项目中,通过DSL领域模型的概念,将前端程序员日常工作80%的工作进行了整合,而通过DSl将这80%的工作进行沉淀,只需要用户通过文档进行对应的配置即可展示想要的页面。在组件方面,并不是像前端程序员日常工作一样,将一些重复性的东西抽离出来变成一个组件进行调用,在elpis中我们通过DSL模版引擎,以及各类组件的解析器进行动态的渲染,而不是写死在页面上。

所以我觉得在elpis项目中DSL模版引擎的真正目的是为了培养程序员的框架思维,以及思考问题和不断学习的能力,这样才能让前端程序员在日常的工作中保持更高的竞争力。

相关推荐
不在逃避q6 分钟前
Trae/Vs Code/Cursor命令行无法跑npm命令
前端·arcgis·npm
夏殇之殁21 分钟前
包中创建自定义列表项。 . 使用自定义列表项进行数据绑定 . 将天气预报数据保存到本地内存表,通过LiveBindings进行显示。 ...
服务器·前端·javascript
The Chosen One98526 分钟前
高进度算法模板速记(待完善)
java·前端·算法
陈随易31 分钟前
MoonBit抓包模块pcap,查看电脑的每一次联网通信
前端·后端·程序员
新中地GIS开发老师2 小时前
WebGIS开发学生作品|低空航天管理与航线规划系统
前端·javascript·webgis·三维gis开发
用户059540174462 小时前
大模型对话记忆持久化踩坑实录:用 Playwright 自动化测了 300 次,终于揪出会话丢失的真凶
前端·css
丙氨酸長鏈2 小时前
Web前端入门第 问:JavaScript 一个简单的 IndexedDB 数据库入门示例
前端·javascript·数据库
kyriewen3 小时前
面试官让我手写虚拟列表——AI生成的版本,快速滚动几下就白屏了
前端·javascript·面试
IT_陈寒3 小时前
Vite热更新失效?你可能漏了这个配置
前端·人工智能·后端
梅孔立4 小时前
两种免费的翻译API调用方式详解 - Edge官方API与个人缓存服务
前端·缓存·edge