惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - x3d

deepin 23 一个可用 mysql-workbench 版本 8.0.36 基于 Maxwell 实现 MySQL 数据实时迁移到 Mongodb 本地开发环境 通过Podman 手动从头搭建 Ubuntu 容器镜像 intel ax203/ax201 无线网卡驱动 firmware 居然有问题 Direct firmware load for iwlwifi-bz-b0-hr-b0-94.ucode failed with error -2 在安卓平板上搭建 webdav 服务 近期不要选aliyun cloud linux 镜像 一点 PHP 中优雅的将JSON/XML/YAML 等数据反序列化成指定的类对象 开始收割了 PHP Composer 虚拟依赖包 - 实现按需载入钉钉对应功能模块的 php sdk 盘点之原地踏步三 盘点之原地踏步二 盘点之原地踏步一:weui 的一点探索 apijson 初探 Apache Synapse ESB Think3 ORM 《超文本和超链接》的时间线整理 MEAF框架概念检索工具 现代企业架构框架MEAF初次解读
erupt api
x3d · 2022-06-04 · via 博客园 - x3d

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