erupt api

2021年在工业软件领域,团队中推广 erupt 框架做了一些应用,总体上效果非常不错,让团队的开发成员可以很好的做到关注点分离,从持久化层的数据实体设计到领域层的逻辑叠加再到表现层的UI组件绑定。

在互联网领域,它的应用可能会稍有限制,基于Hibernate的ORM模型,大数据量下的性能问题可能会比较突出。因而,会需要替换持久化层的实现方式,比如可以改为基于MyBatis-Plus做兼容,以便得到更高的性能优化方面的可控性。

erupt 确实可以算是“低代码”圈子的应用框架,这比市面上其它代码生成器级别的解决方案更“低”,尽管它的View Model 的DSL是基于Java语言(某种意义上这更说明了加上注解后的Java语言的表达能力强,比较了 一圈下来,可能要回归到XML的领域才有得一拼),但是使用Java也是一个强项,因为应用中总免不了各行业业务场景的领域化编码,Java编写的领域逻辑可以无缝复用基于Java的DSL,免去多余的学习成本。

然而,惯性上,我总有一种造轮子的冲动,所以习惯于找一些视角尝试整体性的了解erupt的设计原理或者思想。比如技术层面它在Spring 框架层的一些应用、JPA层、基于magic API的扩展层等,以及产品层面低代码 ViewModel 层 DSL定义,另外还有一个视角:前后端的API接口规范,这是工程实践层面。

DSL 概念;

  1. Erupt
    1. power
    2. RowOperation[] rowOperation
    3. Drill[] drills
    4. Filter[] filter
    5. Class>[] dataProxy
    6. Tree tree
    7. LinkTree linkTree
    8. KV[] param
    9. extra

据《Unix编程艺术》一书中归纳,API在模块间扮演双重角色。

  1. 在实现层面,作为模块之间的滞塞点(choke point),阻止各自的内部细节被相邻模块知晓;
  2. 在设计层面,正是API(而不是模块间的实现代码)真正定义了整个体系。

将 erupt 定义的前后端 api 清单简单整理:

  1. []core
    1. []EruptApi:/erupt-api
      1. []/version
      2. []/erupt-app
      3. []/erupt-machine-code
    2. []EruptBuild:/erupt-api/build
      1. []/
      2. []/{erupt}/
    3. []EruptComponent:/erupt-api/comp
      1. []/auto-complete/{erupt}/
      2. []/choice-item/{erupt}/
      3. []/tags-item/{erupt}/
    4. []EruptData:/erupt-api/data
      1. []/table/
      2. []/tree/
      3. []/init-value/
      4. []/{erupt}/
      5. []/{erupt}/operator/
      6. []/tab/tree/{erupt}/
      7. []/{erupt}/checkbox/
      8. []/{erupt}/reference-table/
      9. []/depend-tree/
      10. []/{erupt}/reference-tree/
      11. []/validate-erupt/
      12. []/extra-row/
    5. []EruptDrill:/erupt-api/data
      1. []{erupt}/drill/{code}/
      2. []/add/{erupt}/drill/{code}/
    6. []EruptExcel:/erupt-api/excel
      1. []/template/
      2. []/export/
      3. []/import/
    7. []EruptFile:/erupt-api/file
      1. []/upload/{erupt}/
      2. []/uploads/{erupt}/
      3. []/upload-html-editor/{erupt}/
      4. []/upload-ueditor/{erupt}/
      5. []/download-attachment
    8. []EruptModify:/erupt-api/data/modify
      1. []POST /
      2. []PUT /
      3. []DELETE /{erupt}/
      4. []DELETE /
      5. []
  2. []upms
    1. []EruptUser:/erupt-api
      1. []/login
      2. []/menu;先实现这个菜单的构造接口,就可以还原显示完整的菜单;
      3. []/logout
      4. []/change-pwd
      5. []/token-valid
      6. []/code-img
posted @ 2022-06-04 10:41  x3d  阅读(270)  评论(0编辑  收藏  举报