Kotlin JS:是否可以使用 Spring Boot 和 Kotlin/JS没有前端框架设置 Kotlin Web 应用程序? index.htmlbuild.gradle.kts

问题描述

我一直在阅读书籍并尝试 Kotlin 全栈开发示例,但它们都有一个共同点,即它们是为 SPA 应用程序构建的,并且客户端的逻辑很重。相反,我想构建一个 Web 应用程序,其中服务器端的业务逻辑很重,而客户端则很轻,主要用于用户交互。我想使用服务器端渲染(典型的路由注释 GetMapping 和 PostMapping,使用 freemarker 或 thymeleaf 模板)构建一个传统的 Spring Boot JVM 应用程序,而客户端则很轻,主要使用基本技术完成。

所以我的问题是,是否可以设置 Kotlin JS 以便我可以在 Kotlin 而不是 Javascript 中编写客户端逻辑?我不需要前端框架,也许至多是 JQuery,仅此而已。基本上,只是一个传统的服务器端应用程序,但是客户端代码是用 Kotlin JS 用 Kotlin 编写的。

这对 Kotlin 多平台可行吗?如果是这样,谁能告诉我如何在 IntelliJ 中设置这样的项目?谢谢。

解决方法

是的,这是可能的。请记住,Kotlin Multiplatform 是在目标之间共享代码的平台。例如,您可以将一些 DTO 模型存储在一个公共项目中,并在您的 Kotlin JVM 后端和 Kotlin JS 前端之间共享。 您要求使用 Kotlin JS,它可以在没有多平台设置的情况下使用。因此,如果您不需要共享公共代码,您可以简单地添加单独的 koltin-js 模块,该模块生成一个 javasctipt 文件 n build.gradle 。这可以由 spring 提供并包含在模板生成的 html 文件中:

index.html

<html>
  <body>
  <!-- Link to the compiled js files-->
  <script src="kotlin.js"></script>
  <!-- Link to the compiled js files-->
  <script src="output.js"></script>
  </body>
</html>

build.gradle.kts

plugins {
    id("kotlin2js") version "1.5.0"
}

dependencies {
    implementation(kotlin("stdlib-js"))
}

repositories {
    jcenter()
    mavenCentral()
}

tasks {
    compileKotlin2Js {
        kotlinOptions {
            outputFile = "${sourceSets.main.get().output.resourcesDir}/output.js"
            sourceMap = true
        }
    }
}

您可以在这里找到一个不使用任何框架的简单 Kotlin-JS 项目: https://github.com/TobseF/KotlinJsGameWishlist

Kotlin 多平台由于公共代码模块而更加强大。所以应该也有可能。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...