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 概念;
- Erupt
- power
- RowOperation[] rowOperation
- Drill[] drills
- Filter[] filter
- Class>[] dataProxy
- Tree tree
- LinkTree linkTree
- KV[] param
- extra
据《Unix编程艺术》一书中归纳,API在模块间扮演双重角色。
- 在实现层面,作为模块之间的滞塞点(choke point),阻止各自的内部细节被相邻模块知晓;
- 在设计层面,正是API(而不是模块间的实现代码)真正定义了整个体系。
将 erupt 定义的前后端 api 清单简单整理:
- []core
- []EruptApi:/erupt-api
- []/version
- []/erupt-app
- []/erupt-machine-code
- []EruptBuild:/erupt-api/build
- []/
- []/{erupt}/
- []EruptComponent:/erupt-api/comp
- []/auto-complete/{erupt}/
- []/choice-item/{erupt}/
- []/tags-item/{erupt}/
- []EruptData:/erupt-api/data
- []/table/
- []/tree/
- []/init-value/
- []/{erupt}/
- []/{erupt}/operator/
- []/tab/tree/{erupt}/
- []/{erupt}/checkbox/
- []/{erupt}/reference-table/
- []/depend-tree/
- []/{erupt}/reference-tree/
- []/validate-erupt/
- []/extra-row/
- []EruptDrill:/erupt-api/data
- []{erupt}/drill/{code}/
- []/add/{erupt}/drill/{code}/
- []EruptExcel:/erupt-api/excel
- []/template/
- []/export/
- []/import/
- []EruptFile:/erupt-api/file
- []/upload/{erupt}/
- []/uploads/{erupt}/
- []/upload-html-editor/{erupt}/
- []/upload-ueditor/{erupt}/
- []/download-attachment
- []EruptModify:/erupt-api/data/modify
- []POST /
- []PUT /
- []DELETE /{erupt}/
- []DELETE /
- []
- []EruptApi:/erupt-api
- []upms
- []EruptUser:/erupt-api
- []/login
- []/menu;先实现这个菜单的构造接口,就可以还原显示完整的菜单;
- []/logout
- []/change-pwd
- []/token-valid
- []/code-img
- []EruptUser:/erupt-api
本文来源:http://www.cnblogs.com/x3d/,转载请注明。