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
erupt 定義的api 規範
- []core
- []EruptApi:/erupt-api
- []/version
- []/erupt-app
- []/erupt-machine-code
- []EruptBuild:/erupt-api/build
- []/{erupt}
- []/{erupt}/{field}
- []EruptComponent:/erupt-api/comp
- []/auto-complete/{erupt}/{field}
- []/choice-item/{erupt}/{field}
- []/tags-item/{erupt}/{field}
- []EruptData:/erupt-api/data
- []/table/{erupt}
- []/tree/{erupt}
- []/init-value/{erupt}
- []/{erupt}/{id}
- []/{erupt}/operator/{code}
- []/tab/tree/{erupt}/{tabFieldName}
- []/{erupt}/checkbox/{fieldName}
- []/{erupt}/reference-table/{fieldName}
- []/depend-tree/{erupt}
- []/{erupt}/reference-tree/{fieldName}
- []/validate-erupt/{erupt}
- []/extra-row/{erupt}
- []EruptDrill:/erupt-api/data
- []{erupt}/drill/{code}/{id}
- []/add/{erupt}/drill/{code}/{id}
- []EruptExcel:/erupt-api/excel
- []/template/{erupt}
- []/export/{erupt}
- []/import/{erupt}
- []EruptFile:/erupt-api/file
- []/upload/{erupt}/{field}
- []/uploads/{erupt}/{field}
- []/upload-html-editor/{erupt}/{field}
- []/upload-ueditor/{erupt}/{field}
- []/download-attachment
- []EruptModify:/erupt-api/data/modify
- []POST /{erupt}
- []PUT /{erupt}
- []DELETE /{erupt}/{id}
- []DELETE /{erupt}
- []
- []EruptApi:/erupt-api
- []upms
- []EruptUser:/erupt-api
- []/login
- []/menu;先實現這個菜單的構造接口,就可以還原顯示完整的菜單;
- []/logout
- []/change-pwd
- []/token-valid
- []/code-img
- []EruptUser:/erupt-api