Spring程式碼生成器:JHipster生成的程式碼是難以維護還是無法立即投入生產 – N47

banq發表於2020-04-03

JHipster是一個開源平臺,用於生成,開發和部署Spring Boot + Angular / React / Vue Web應用程式。Github上有超過15000個星星,它是Spring Boot最受歡迎的程式碼生成框架。但是,是否太過於大肆宣傳?還是生成的程式碼太難維護?還是無法立即投入生產了?
首先要注意的是,JHipster本身並不是一個單獨的框架。它使用yeoman和.jdl檔案以便在Spring Boot中為後端生成程式碼,並在Angular或React或Vue中生成前端程式碼。在最初生成專案之後,您可以選擇使用生成的程式碼而無需再次執行JHipster命令,或者使用JHipster來逐步增長專案並開發新功能。

JDL到底是什麼?
JDL是特定於JHipster的域語言,您可以在其中使用使用者友好的語法在一個檔案(或多個檔案)中描述所有應用程式,部署,實體及其關係。
您可以使用我們的線上  JDL-Studio  或 支援使用JDL檔案的  JHipster IDE外掛/擴充套件之一。
用於Blog應用程式的簡單JDL檔案示例:

entity Blog {
  name String required minlength(3)
  handle String required minlength(2)
}
 
entity Post {
  title String required
  content TextBlob required
  date Instant required
}
 
entity Tag {
  name String required minlength(2)
}
 
relationship ManyToOne {
  Blog{user(login)} to User
  Post{blog(name)} to Blog
}
 
relationship ManyToMany {
  Post{tag(name)} to Tag{entry}
}
 
paginate Post, Tag with infinite-scroll


(banq注:這些是資料庫表的定義,生成的程式碼是一種失血模型,DTO,失去業務價值。違背DDD)

使用哪些技術?
在後端,擁有以下技術:

  • Spring Boot作為主要的後端框架
  • Maven或Gradle進行配置
  • Spring Security作為安全框架
  • Spring MVC REST + Jackson進行REST通訊
  • 用於物件關係對映的Spring Data JPA + Bean驗證
  • 用於資料庫更新的Liquibase
  • MySQL,PostgreSQL,Oracle,MsSQL或MariaDB作為SQL資料庫
  • MongoDB,Counchbase或Cassandra作為NoSQL資料庫
  • Thymleaf作為模板引擎
  • 可選的 Elasticsearch支援,如果您想在資料庫之上具有搜尋功能
  • 用於Web套接字通訊的可選Spring WebSockets
  • 可選的Kafka支援作為釋出-訂閱訊息系統

在前端方面,使用了以下技術:
  • Angular或React或Vue作為主要的前端框架
  • 使用Twitter Bootstrap進行響應式Web設計
  • 與現代瀏覽器相容的HTML5 Boilerplate
  • 全面的國際化支援
  • 使用NPM安裝新的JavaScript庫
  • 使用Webpack構建,最佳化和實時重新載入
  • 用Jest和Protractor進行測試
  • Sass對CSS設計的可選支援


如何開始?

  1. 前提要求:Java,  Git 和  Node.js
  2. 安裝JHipster npm install -g generator-jhipster
  3. 建立一個新目錄並進入 mkdir myApp && cd myApp
  4. 執行JHipster並按照螢幕上的說明進行操作 jhipster
  5. 使用JDL Studio為實體建模   並下載結果  jhipster-jdl.jh 檔案
  6. 生成您的實體 jhipster import-jdl jhipster-jdl.jh
  7. 執行./mvnw以啟動生成的後端
  8. 執行npm start以啟動具有實時重新載入支援的前端


生成的程式碼和應用程​​序看起來如何?
如果您只想檢視示例生成的應用程式而無需啟動整個框架,則可以檢視此Github官方倉庫以獲取最新的示例程式碼:https : //github.com/jhipster/jhipster-sample-app


優缺點都有什麼
要記住的重要一點是,JHipster並不是解決所有問題的“靈丹妙藥”,也不是所有新專案的最佳解決方案。作為一名優秀的軟體工程師,您將不得不權衡該平臺的優缺點,並決定何時使用它以及何時使用另一種方法更好。將JHipster用於生產專案後,這些是我所經歷過的一些利弊:
優點

  • 透過許多預先配置的技術輕鬆引導新專案
  • JHipster在後端和前端開發中幾乎始終遵循最佳實踐和最新趨勢
  • 開箱即用的登入,註冊,使用者管理和監視
  • 用於生成專案的嚮導,專案中僅包含您選擇的技術
  • 定義自己的JDL檔案後,將為您的實體生成所有模型,儲存庫,服務和控制器類,以及整合測試。當您希望儘快進行功能開發時,這可以節省大量的專案乞討時間

缺點
  • 如果您不熟悉所生成專案中使用的技術,那麼它可能會令人不知所措,並且很容易迷失在許多不同技術的混合中
  • 在最初的專案之後使用JHipster並不是一個平穩的體驗。類和Liquibase指令碼正在被覆蓋,更改初始JDL模型時必須非常小心。或者,您可以決定在最初生成專案後不使用JHipster繼續操作
  • 從端點返回的REST響應並不總是與業務需求相對應,通常您必須手動修改初始的JHipster REST響應
  • 並非所有可用選項都處於同一級別,JHipster正在使用和配置的某些技術比其他技術更為精煉。如果您決定使用社群模組,尤其如此

什麼樣的專案比較合適?
綜上所述,重要的是要了解,有些專案可以從JHipster中受益匪淺,而有些專案如果不使用此平臺,則會更好。
根據我的經驗,一個不錯的候選人是一個未開發的專案,該專案有望快速交付許多功能。從第一天開始,JHipster將極大地提高工作效率,並減少您需要編寫的樣板程式碼。這樣一來,您就可以真正快速地進行功能開發。這對於期限緊迫的新專案,概念證明,內部專案,駭客馬拉松和初創公司非常有用。
另一方面,不太理想的情況是,如果您已經啟動並執行了一個專案,那麼在這種情況下,JHipster將無能為力。如果應用程式具有很多特定的業務邏輯並且不是簡單的CRUD應用程式,例如,一個AI專案,一個聊天機器人或一個不適合或不支援這些新技術的遺留生態系統,則為另一種情況。

JHipster,值得一試嗎?
只有一種確定JHipster是否值得用於下一個專案的可靠方法,那就是自己嘗試一下並嘗試使用JHipster提供的不同功能和配置。
充其量,您將為下一個專案找到一個新的框架,並在下次啟動專案時省去了很多工作。最糟糕的是,您將瞭解後端和前端的最新趨勢,並從龐大的社群中學習一些最佳實踐。
 

相關文章