一个非常简单的基于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中运行。