JHipster:Java和JavaScript的全棧框架

語言: CN / TW / HK

譯者 | 塗承燁

審校 | 莫奇

JHipster是生成Java和JavaScript混合應用程式的成熟框架,支援你喜歡用的開發工具,並提供現成的監控和其他管理功能。

JHipster是一個長期存在且雄心勃勃的Java和JavaScript混合專案, 致力於使用響應式前端簡化全棧Java應用程式的開發 。JHipster開發團隊不斷髮布新版本,以跟上IT行業變化。通過構建一個簡單的應用程式來了解這個框架可以做什麼。

   PA RT  01   

   JHipster是什麼?  

JHipster支援前端的React、Vue和Angular。它通過技術藍圖上的外掛支援包括Svelte在內的其他框架。在後端,Spring Boot起著 重要的作用 。在這方面,JHipster與Hilla框架類似,但有一個更雄心勃勃的目標,即支援多種前端技術棧。本質上,JHipster是一個高階構建工具,統一了Java和JavaScript構建工具鏈,並將各種管理功能分層。

除了支援全棧應用程式之外,JHipster還支援構建微服務元件,併為基於JPA的關係資料儲存和NoSQL資料儲存(如MongoDB和Cassandra)提供了腳手架。它還具有日誌記錄和分析功能。

JHipster的工具集包括命令列和領域特定語言(DSL),其中包含視覺化資料建模器和基於web的建構函式器(想想Spring的初始化器)。我們通過命令列開始JHipster的使用。請注意,你需要安裝最新版本的Java、Node.js、Git。

   PA RT  02   

  JHipster示例應用程式  

按照JHipster快速啟動指南,需安裝generator-jhipster NPM包,並建立一個新目錄來執行生成器,你會看到圖1所示的互動式對話操作畫面。

圖1  Generator-JHipser構建

你可以選擇接受大多數的預設設定。但在本例中,將使用MongoDB作為資料庫,並將React作為前端框架(可以選擇任何反映你心情的Bootswatch主題)。一旦設定了這些選項,JHipster會完成構建工作,並在剛剛建立的目錄中出現一個新的應用程式程式碼。

   PA RT  03   

  構建並執行應用程式  

JHipster已分別生成了Java和JavaScript應用程式。後端使用Maven構建,前端使用webpack構建。可以同時執行這兩部分的程式來啟動整個應用程式。(請記住,還需要同時在後臺執行MongoDB)

在shell中,輸入:./mvn -P-webapp。此命令將構建並執行Java後端。我們使用-P-webapp避免讓Maven執行webpack部分的內容。

在另一個shell中,輸入:npm start。此命令將構建前端並在webpack的開發模式下執行,通過API呼叫剛剛啟動的Java服務。

如果一切順利,將在localhost:8080上看到圖2所示的頁面。

圖2  JHipster的歡迎頁面

   PA RT  04   

  建立測試使用者  

如果看一下應用程式目錄,你會發現JHipster生成器的輸出遠遠超過你常用的生成工具,包括功能性使用者管理功能和基於JWT的身份驗證功能。該應用程式還具有預設帳戶,可使用該帳戶建立測試使用者。

首先,請使用系統頁面右上角的Register選項建立新使用者。然後,建立一個測試使用者([email protected]),最後轉到登入頁面並選擇預設的admin/admin使用者。登入後,導航到使用者管理頁面(管理->使用者管理)。請注意,新使用者已在列表中。你可以通過“非活動”按鈕切換為“活動”來啟用測試使用者,然後可用測試使用者身份登入。請注意,此測試使用者無法訪問管理控制檯。

正如前面所說,JHipster有很多現成的功能。JHipster不僅支援React和MongoDB,而且還支援Angular、Vue以及大多數的SQL和NoSQL資料儲存。

   PA RT  05   

 程式碼探索  

為了支援所有這些功能,JHipster包含了很多的程式碼。幸運的是,這些基本上是最新的程式碼,並且遵循了程式設計最佳實踐。例如,React程式碼使用功能元件,利用Hooks,並針對集中式的儲存Redux執行。

檢視應用程式目錄,將看到如下結構:

/foundry-jhipster/
/webpack/ : Config/utils for the webpack bundle
/src/main/
/java/ : Java sources
/webapp/ : Front-end sources
/target/ : Output directory for both builds
/webapp/ : Front-end build output
/java/ : Back-end build output
/docker/ : Files to support containerization

左右滑動檢視完整程式碼

Java應用程式的入口是:

src/main/java/com/mycompany/myapp/JhipsterApp.java

它本質上是一個 Spring Boot web 應用程式,可以通過- -spring.profiles.active=your-active-profile 命令進行配置。

通過Spring Security執行身份驗證和授權,開箱即用的Java應用程式本質上是使用者CRUD(建立、讀取、更新和刪除)功能的API。Spring Security系統可在/myapp/Security中配置。請記住,JHipster使用的是JSON Web令牌,所以支援它的類程式碼位於/security/jwt中。

應用程式的域模型在/domain目錄中定義,與前端/entities目錄相對應。通過檢視package.json,可查詢可用的前端指令碼。除了現在使用的dev-mode命令外,還包括mongodb prune命令、測試和生產構建命令。

客戶端入口位於:

/src/main/webapp/index.html

但真正的執行位於/sec/main/webapp/app/app.tsx,這裡定義了承擔各種頁面元件的應用程式路由(路由在router.tsx中定義)。

可以在main/webapp/app/modules中找到應用程式的頁面元件。例如,在/home/home.tsx有主頁頁面的定義。

在/main/webapp/app/shared目錄中,可以找到整個應用程式使用的程式碼。其中大部分用於集中式儲存,如model 定義和reducers。目前,應用程式只處理使用者,因此只有這些元件和身份驗證程式碼位於共享目錄中。

在/entities資料夾中,包含建模實體的程式碼。但請注意,使用者模型儲存在共享目錄中。但目前還沒有實體(entities),所以接下來必須新增一些。

   PA RT  06   

  定義模型:JDL和JDL Studio  

JDL是JHipster用於定義應用程式模型的領域特定語言。JDL所做的遠遠不止於使用JDL元資料定義整個應用程式,但我們將重點關注模型。

首先,讓我們使用JHipster的線上工具JDL-Studio為域模型快速生成一些CRUD功能。你將看到一個實體關係生成器,如圖3所示。

圖3  JDL編譯器

JDL builder支援定義實體及其屬性,以及它們之間的關係。 你可以通過更改左側的實體定義並觀察它們顯示出來的表達方式來探索語法。

點選頁面右上角的【下載此JDL原始碼】按鈕來下載已定義好的實體。(請注意,工具欄中有多個選項用於相關的配置)

獲得檔案後,通過命令列轉到專案根目錄下,在命令列鍵入jhipster jdl my jdl file.jdl,其中是my-jdl-file.jdl是剛剛匯出的檔案的名稱。

將會提示您是否要覆蓋這些檔案。選擇是,則繼續構建。完成後,可以重新啟動伺服器,並檢視新增到應用程式的內容。在瀏覽器上以9000的埠上再次開啟應用程式,然後以admin/admin登入。

現在,當開啟導航欄中的Entities選單項時,你將看到所有剛匯入的實體,以及一個可完全控制的控制檯來管理它們。例如,您可以建立一個新的“Country”實體,然後建立一個新的“Location”實體,並在Location實體中引用新建立的Country實體。請注意,所有CRUD功能都在這裡。

   PA RT  07   

  監測和API管理  

幾個附加功能對於管理員使用者來說,值得關注。Administration選單包括一個Metrics選項,可以深入瞭解正在執行的JVM特性,如圖4所示。有關其監視功能的更多資訊,請參閱JHipster文件。

圖4 使用JVM指標監視JHipster應用程式

JHipster還為其後臺端生成OpenAPI/Swagger風格的定義,以及一個用於互動的簡單控制檯。圖5展示了API管理頁面。

圖5 通過API管理頁面與後臺端互動

JHipster提供了一個靈活的體系結構,允許不同的資料儲存和前端框架。總而言之,這是一個令人印象深刻的框架。

原文連結:

http://www.infoworld.com/article/3661308/intro-to-jhipster-a-full-stack-framework-for-java-and-javascript.html

譯者介紹

塗承燁,51CTO社群編輯,資訊系統專案管理師、資訊系統監理師、PMP,某省綜合性評標專家,擁有15年的開發經驗。對專案管理、前後端開發、微服務、架構設計、物聯網、大資料等較為關注。目前就職於壹體技術有限公司,從事較大型專案管理工作。

直播預告

直播主題: IT 轉型需要什麼樣的作業系統?

直播時間: 2022年 7月5日(週二) 20:00- 21:00

直播介紹: 軟體定義時代的 IT 轉型要求簡化多模式 IT並提高傳統 IT 基礎架構的效率,以輕鬆地在本地和公共雲環境中部署和轉換業務關鍵型工作負載。 SUSE Linux Enterprise Server 15 SP4 採用多模式設計,可幫助組織連線傳統和軟體定義的基礎架構,為企業提供安全且高效執行的 IT 環境。

點選此處“ 閱讀全文 ”檢視精彩內容