iT邦幫忙

2021 iThome 鐵人賽

DAY 3
0
Modern Web

ZK 30天速成系列 第 3

讓你用 ZK快速開發的環境設定

本系列文章範例專案

本系列文章中所有的設定與範例程式碼都可以在 Github 上的範例專案 zkquickstart 找到,有些細節就交給原始碼來說明更清楚。

在使用 zk 開發時,我推薦大家一個可以快速啟動、驗證結果的環境設定。本章節我只使用我熟悉的 Maven, Intellij IDEA 示範,使用其他工具的人,只要了解原理,你應該可以在你熟悉的工具找到對應的設定方法。

安裝 Trava-jdk-11-dcevm

這個免費的 JDK 可以自動偵測 java class 的變動,然後自動重新載入新編譯過的 class 檔到 JVM,在開發過可以省去重啟 java 應用程式伺服器,減少等待時間。

在 IntelliJ IDEA 中設定 Maven Runner 加上參數:

-XX:HotswapAgent=core

https://ithelp.ithome.com.tw/upload/images/20210918/200506213ny0dzMgRI.jpg

設定完後,需要以 debug 模式啟動伺服器。每次我在 IntelliJ 中修改 Java 程式碼、重新編譯 java 檔後(cmd+shift+F9),我就可以看到以下訊息:

https://ithelp.ithome.com.tw/upload/images/20210918/200506210mbRfeDacP.jpg

代表新的 class 已經已經被載入 JVM,我只要重載頁面就可以執行新的程式碼,相當方便不用忙著重啟。

設定 jetty maven plugin

撰寫 zul 完後最需要的是看到瀏覽器繪製的頁面結果,如果這時候你需要打包、部署、啟動應用程式伺服器的話,這個程序做個10 次就會覺得很煩了,而且也很耗時。推薦各位使用 maven jetty plugin,優點是啟動速度快,無需打包、部署程序,直接讀取既有的 maven 專案目錄中的檔案來運作應用程式,很適合作為開發時期的輕量應用程式伺服器,可以縮短「修改、測試」每個迭代時間。

<build>
   <plugins>
      <plugin>
         <groupId>org.eclipse.jetty</groupId>
         <artifactId>jetty-maven-plugin</artifactId>
         <version>9.4.43.v20210629</version>
      </plugin>
   </plugins>
</build>

在 pom.xml 中設定完後,要在 intelliJ 中設定 run configuration,設定 goal 為:

jetty:run

https://ithelp.ithome.com.tw/upload/images/20210918/20050621nvpu1X1H90.jpg

啟動 jetty 後,如果是範例專案,訪問網址

http://localhost:8080/zkquickstart/

就可以看到範例專案首頁

結合以上兩個設定,每次修改 java 或是 zul 你都不需要重啟伺服器,即便遇到有少數 hotswap 不能自動載入 class 的情形,重啟伺服器的時間也只需幾秒鐘。

使用支援 web fragment 的伺服器

因為 ZK jar 都內含 web-fragment.xml,其中已經包含必要的 ZK 設定,使用支援 web fragment 的伺服器可以省去在 web.xml 設定 ZK servlet等的步驟。如需要手動設定請參考 web.xml for Servlet 2.4


上一篇
讓Java後端工程師免煩惱前端的 UI 框架
下一篇
兩種開發模式 (MVC, MVVM) 比較
系列文
ZK 30天速成30

尚未有邦友留言

立即登入留言