最近接觸到個新項目,發現它用了一個比較有意思的架構,可以說實作了我剛入行時候的夢想,是以這裡馬不停蹄的和大家分享下。
在我剛開始工作接觸的項目都還沒做前後端分離,經常需要後端來維護頁面,有時候覺得自己好像天生不适合幹前端,你要是讓我研究研究後端的技術,看個中間件源碼啊,分析分析什麼架構底層原理啊,這都問題不大,偶爾搞一下
JS
也可以。你要是讓我寫個
css
樣式,那簡直要命了,一點也提不起興趣,不知道有沒有跟我一樣的。
今天要介紹的架構直接不用寫頁面了,話不多說,下邊咱們直奔主題
Erupt
一個通用背景管理架構,據說有 超低代碼量、 零前端代碼、零 CURD操作、無需建表,純Java注解開發等特色,号稱三分鐘就可以搭建一個完整的背景管理系統。
額~ 聽着好像還挺流批的,到底是不是有這麼魔幻,咱們一起用起來感受下。
首先來搭建一下環境,目前
Erupt
支援
Java
版本
1.8.0
及以上、
Spring Boot
版本
2.0
及其以上。
搭建easy
pom.xml
引入必要的
jar
包
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | |
application.yml
檔案隻要簡單配置資料源就好,提前準備個資料庫,說到資料庫這裡我說個小插曲。
我之前在
Github
送出案例代碼的時候(http://u3v.cn/64LZXz),由于沒太注意沒屏蔽敏感資訊,導緻雲資料庫賬号洩露了,最近我發現已經有小夥伴在資料庫上跑項目了,仔細看了看裡邊的資料結構,發現像是個畢設項目。

本身這個庫就是我跑
demo
案例的一個測試庫,為的就是讓小夥伴能把更多時間放在研究案例的技術點上,減少搭建環境這種沒技術含量的瑣碎事。
發現歸發現,這裡我沒改密碼,也沒删他們的庫,如果你要用就繼續用着,但玩歸玩,鬧歸鬧,你不能亂動不是你的資料!影響其他人學習就不好了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
說了點題外話,我們繼續搞起~
其實到這
Erupt
的環境就搭建完了,額~ ,這就完了?
咱們什麼也沒幹,項目是個空殼子,一行代碼也沒寫,好像連個表也沒建啊!
别着急咱們先啟動下項目,看到控制台列印出很多建表語句和插入語句,這是因為
Erupt
架構底層應用
JPA
持久化,預置建立了一些系統表和資料。
注意:
Erupt
預置表隻會随項目第一次啟動建構一次,如果想重新建立,需删除
.Erupt
檔案(一般在項目的工作空間内),擷取檔案位置方式
1 | |
再看資料庫裡建立了16張系統表,其中
e_upms_user
表是使用者表,預設隻有一個管理者賬号,使用者名、密碼都是
erupt
。
緊接着我們通路http://u6v.cn/5PJCgL,看一下是個什麼效果,竟然有個完整的登入頁面。
用上邊的使用者名、密碼直接登入,
erupt
已經預先實作了完整的權限控等功能,而到這我們幾乎是沒寫過什麼代碼的,都是架構封裝好了的,菜單類資料全部從資料庫動态擷取,一個基礎的背景管理系統就搭建完了,有點哇塞。
有趣的頁面
那麼問題來了?想要自定義頁面怎麼辦?
開篇我們就說過
erupt
是零前端代碼,全部基于
Java
注解開發的,接下來用
Java
注解寫個簡單頁面體驗下。
erupt
有兩個核心注解
@Erupt
,
@EruptField
-
注解修飾類,代表定義一個頁面@Erupt
-
注解修飾字段,代表頁面上顯示的字段名@EruptField
-
注解控制是否操作按鈕,增、删、改、查、導入、導出等@Power
注解表示字段為搜尋條件@Search
-
注解表示頁面取資料對應的表,如果不設定,頁面第一次初始化的時候,會根據類字段值自動建立一張和類名一緻的表名。@Table
注解類型比較多,不一一列舉了,更多的自己到官網瞅:
https://www.erupt.xyz
下邊我們定義一個
Student
類,加上
@Erupt
,
@EruptField
注解,這樣頁面和元素就算寫完了,是不是有點颠覆認知。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | |
但此時新建立的頁面不會顯示出來,還需要我們手動做一個映射關系,在菜單維護中自定義個菜單,類型值一定要為建立的 類名
Student
。
儲存重新整理後會看到我們的新頁面出現了,而且頁面的功能很完整,基礎操作、查詢、導入、導出功能都自動實作了。
頁面新增一個學生資訊,對應的
Student
表也多了條記錄,而這個持久化的過程完全由架構來做。
盡管
Erupt
架構對前後端代碼做了深度封裝,但它提供了豐富靈活的自定義接口,來滿足我們的個性化需求。
比如我們在錄入新學生資訊時,希望屏蔽名字為
張三
的同學,可以對頁面按鈕功能做代理
dataProxy
,實作自定義的邏輯,對哪個按鈕代理就實作對應方法即可,如
beforeAdd
、
afterAdd
是對新增按鈕的代理。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | |
當我們在頁面錄入名字為
張三
的同學時,成功屏蔽。其他類似的功能還有很多,這裡就不一一舉例了,看文檔看文檔~
如果我們想要按傳統的方式開發接口,不用擔心會和
Erupt
的頁面生成規則有沖突,絲毫不會受影響。而且
Erupt
内部內建了
JPA
,提供了現成的
dao
接口,隻要調用對應API即可上手開發。
如果你不想手寫
Java
代碼也沒關系,
Erupt
還提供了代碼生成器,自定義
Java
類名和字段名,可以生成代碼,直接
copy
就行了。
說到這我隻介紹了
Erupt
一丢丢的基礎特性,主要是想讓小夥伴知道有這麼個靈活利器。
不僅如此它還支援豐富的資料類型,内置了像定時
任務管理
、
多表聯合查詢
、
前後端分離部署
、
接口權限
、
操作記錄
、
多資料源
、
郵件系統
、
黑白名單
等等很多實用功能,都直接調用API就可以用。
說在後邊
Erupt
架構的優點是顯而易見的,快捷、高效、上手容易,對新手相當的友好,但在實際生産環境中我隻是用它來做一些配置字典類的資料管理。
因為它的深度封裝雖然讓開發變的簡單高效,可對于業務相對複雜、高度定制的系統來說,
Erupt
架構顯得力不從心,更關鍵的一點,它的社群并不算特别活躍,畢竟是個小衆架構。
不過,技術從來都是服務于業務的,如果你的業務與
Erupt
的氣質相比對,别猶豫,用它!