关于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模版引擎的真正目的是为了培养程序员的框架思维,以及思考问题和不断学习的能力,这样才能让前端程序员在日常的工作中保持更高的竞争力。

相关推荐
Pedantic1 小时前
SwiftUI 手势层级(Gesture Hierarchy)详解
前端
飘尘1 小时前
前端转型全栈(Java后端)的快速上手指引
前端·后端·全栈
一颗烂土豆1 小时前
Meshopt 压缩深度解析,为什么它比 Draco 更快
前端·javascript·webgl
浏览器工程师2 小时前
AI Agent 接浏览器任务,先别让它一路点到底
前端·后端
雨季mo浅忆2 小时前
VSCode自动格式化三要素
前端
爱勇宝3 小时前
深扒 Anthropic 1680 位工程师简历:应届生几乎没机会,AI 公司最缺的不是博士
前端·后端·程序员
kyriewen4 小时前
同事每天催我 Code Review,我写了个脚本让 AI 替我 review PR——现在他反过来催 AI 了
前端·javascript·ai编程
user20585561518136 小时前
Windows 项目安装时报 `node-sass` 错误,如何快速处理
前端
LiaCode6 小时前
Redis 在生产项目的使用
前端·后端