一個非常簡單的基於Kotlin的PWA演示。針對想要使用熟悉的強烈語言,並且對所有JavaScript瀏覽器內容的感覺都量身定制的Android開發人員。該應用程序的開發模型著重於在服務器端Kotlin代碼中編寫邏輯。無需使用JavaScript開發。需要Java 17+。
該應用程序是一個非常簡單的任務列表應用程序,旨在展示以下功能:
請參閱在線演示。
Progressive Web應用程序是一個網頁,手機瀏覽器可以下載,然後可以在一定程度上脫機工作。 PWA還允許用戶保存應用程序快捷方式作為其主屏幕的圖標;該應用程序從該圖標啟動時,將完全全屏啟動,而無需任何URL欄,完全模仿了本機應用程序。
由於我們將實現邏輯服務器端以避免JavaScript,因此離線模式顯然無法正常工作。因此,我們將使該應用程序變得足夠漸進 - 我們將包括所有必要的內容,例如manifest.json和服務工作人員,但是在離線時,他們只會顯示“您離線”頁面。但是,這一領域正在進行努力,所以讓我們拭目以待。
PWA還傾向於適應屏幕尺寸(所謂的響應能力),通常使用CSS規則。您可以在Vaadin Progressive Web應用程序上查看什麼是PWA。
我們將使用Vaadin框架。背後的原因是,Vaadin框架是基於組件的Java Web框架。因此,Vaadin的編程模型非常類似於Android開發人員的熟悉。您只需將Android視圖轉換為Vaadin組件,然後繼續將按鈕嵌套到一堆垂直/HorizonTallayouts中 - 完全像您對Android開發一樣,但沒有使用Android開發模型的痛苦。
Vaadin包裝量大量的預定義組件,因此您通常不必開發自己的組件。您只需使用純Java/kotlin代碼來協調預製組件服務器端。
您可以閱讀有關Vaadin開發對Android的好處的更多信息。
請查看有關您如何運行,開發和打包這個基於Vaadin-boot的應用程序的Vaadin引導文檔。
sw.js ? vaadin通過@PWA註釋自動生成了sw.js ,所有清單和離線頁面。有關更多詳細信息,請參見創建具有流量的PWA。
Vaadin當然使用與Android不同的算法來執行佈局。幸運的是,Vaadin(或CSS)知道一個與Android的LinearLayout -Flexbox非常相似的佈局。請閱讀有關Vaadin 8和Android開發人員的文章的Vaadin 10服務器側佈局,介紹瞭如何使用VerticalLayout和HorizontalLayout ,這些verticallayout和HorizonTallayout在引擎蓋下使用Flexbox,但具有Android Developers可能熟悉的API。
您可以下載並安裝Intellij Idea Community Edition,然後將該項目導入其中。 Android Studio基於Intellij Idea社區,因此您應該立即感到賓至如歸。
要啟動您的應用程序,只需打開Main.kt並運行main()函數。只需打開您的瀏覽器並擊中http:// localhost:8080。
UI的主要肉位於TaskListView.kt中 - 隨時為自己編輯和實驗。有很多先前存在的vaadin成分;您可以查看飲料好友示例應用程序,以獲取更多組件使用示例。您還應該閱讀完整的vaadin文檔。
瀏覽器是一個非常強大的IDE,可以幫助您調試與CSS和佈局相關的問題。花點時間,慢慢閱讀以下教程,以使用瀏覽器開發人員工具獲取:
測試基於Vaadin的應用程序非常容易 - 您需要通過選擇器查找組件,例如一個帶有“ Click Me”標題的按鈕。 TaskListViewTest.kt示例測試文件顯示了一個簡單的測試,該測試測試主屏幕。閱讀有關此測試方法背景的無瀏覽器測試項目文檔。
沒有數據庫,我們只能將任務列表存儲到會話中,然後在服務器重新啟動時將消失。我們將使用Kotlin-in-Kotlin的SQL數據庫支持。為了使事情變得輕鬆
我們將使用Flyway進行數據庫遷移。請查看Bootstrap.kt,以了解應用程序初始化時如何運行遷移腳本。
任務實體將映射到數據庫;從實體繼承和DAO將使它繼承一堆有用的方法,例如findAll()和save() 。它還將獲得通過DataProvider提供所有實例的方法。有關詳細信息,請參見TaskListView.kt網格配置。
請參閱基本文章,介紹如何將查找器方法連接到實體以及查找和保存的工作原理。
這個應用不過是帶有運行腳本的普通郵政編碼項目。它可以簡單地從命令行(我們包裝內置的碼頭)運行。
要從此應用中產生Docker映像,只需運行
$ docker build --no-cache -t test/vaadin-kotlin-pwa:latest .要運行圖像,只需運行
$ docker run --rm -ti -p8080:8080 test/vaadin-kotlin-pwa完成 - 您的應用程序現在在Localhost:8080上運行。
要在Google Cloud Kubernetes和MySQL中運行此應用程序,只需遵循Deploy Your Vaadin應用程序到Google Cloud Cloud Kubernetes教程即可。
有關更多詳細信息,請參見MicroK8S中的Kotlin應用程序在Microk8中運行。