Spring程式碼生成器:JHipster生成的程式碼是難以維護還是無法立即投入生產 – N47
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設計的可選支援
如何開始?
- 前提要求:Java, Git 和 Node.js。
- 安裝JHipster npm install -g generator-jhipster
- 建立一個新目錄並進入 mkdir myApp && cd myApp
- 執行JHipster並按照螢幕上的說明進行操作 jhipster
- 使用JDL Studio為實體建模 並下載結果 jhipster-jdl.jh 檔案
- 生成您的實體 jhipster import-jdl jhipster-jdl.jh
- 執行./mvnw以啟動生成的後端
- 執行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提供的不同功能和配置。
充其量,您將為下一個專案找到一個新的框架,並在下次啟動專案時省去了很多工作。最糟糕的是,您將瞭解後端和前端的最新趨勢,並從龐大的社群中學習一些最佳實踐。
相關文章
- 思考:如何寫出讓同事難以維護的程式碼?doge
- 如何寫出讓同事無法維護的程式碼?
- 這樣可以寫出無法維護的程式碼
- Cruddiy:無程式碼Bootstrap CRUD生成器boot
- 程式碼生成器
- 什麼是Python的迭代器和生成器?(附程式碼)Python
- SmartCode—不僅僅是功能強大的程式碼生成器
- SpringBoot程式碼生成器Spring Boot
- Laravel 程式碼生成器Laravel
- Spring Boot使用Mybatis-plus和它的程式碼生成器Spring BootMyBatis
- 是成就還是削弱?AI程式碼生成工具與程式設計師的「相愛相殺」AI程式設計師
- 什麼程式碼是ChatGPT無法編寫的? - datachimpChatGPT
- go模板-程式碼生成器Go
- MyBatis Plus程式碼生成器MyBatis
- 無需Java程式碼透過JHipster生成有安全驗證的微服務應用Java微服務
- MyBatis程式碼生成器的實用MyBatis
- SpringBoot程式碼生成器,從此不用手擼程式碼Spring Boot
- 什麼是可維護性的程式碼,這十六點得知道
- beego 程式碼自動生成器Go
- Java SSM springmvc spring mybatis 集程式碼生成器 後臺框架原始碼JavaSSMSpringMVCMyBatis框架原始碼
- 老碼農冒死揭開行業黑幕:如何編寫無法維護的程式碼(上篇)行業
- 低程式碼與無程式碼真正的區別是什麼
- 無程式碼和低程式碼最大的區別是什麼?
- 如何編寫難以維護的 React 程式碼?耦合通用元件與業務邏輯React元件
- JNPF低程式碼開發框架程式碼 生成器設計框架
- 編寫可維護的程式碼是一種溝通技巧 - Max Chernyak
- java程式碼生成器(controller,service,mapper)JavaControllerAPP
- MyBatis-Plus之程式碼生成器MyBatis
- java 程式碼生成器設計方案Java
- 動軟程式碼生成器學習
- mybatis_plus程式碼生成器類MyBatis
- Mybatis-plus程式碼生成器的實現MyBatis
- 寫一個簡單的程式碼生成器
- Mybatis自動程式碼生成器的實現MyBatis
- Ubuntu 22.04 Git 程式碼維護UbuntuGit
- 程式碼生成器之如何快速生成後端介面?後端
- 【疑難系列】 是程式卡住了還是怎麼了?
- 什麼是無程式碼?無程式碼應用開發的12大好處!