【问题标题】:Kotlin JS: Is it possible to set up a Kotlin Web application with Spring Boot and Kotlin/JS(without front-end framework)?Kotlin JS:是否可以使用 Spring Boot 和 Kotlin/JS(无前端框架)设置 Kotlin Web 应用程序?
【发布时间】:2021-05-19 15:45:20
【问题描述】:

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

所以我的问题是,是否可以设置 Kotlin JS 以便我可以用 Kotlin 而不是 Javascript 编写客户端逻辑?我不需要前端框架,最多可能是 JQuery,就是这样。基本上,只是一个传统的服务器端应用程序,但客户端代码是用 Kotlin 和 Kotlin JS 编写的。

这对于 Kotlin 多平台是否可行?如果是这样,谁能告诉我如何在 IntelliJ 中建立这样一个项目?谢谢。

【问题讨论】:

    标签: spring-boot kotlin kotlin-multiplatform kotlin-js


    【解决方案1】:

    是的,这是可能的。请记住,Kotlin Multiplatform 是在您的目标之间共享代码的平台。例如,您可以将一些 DTO 模型存储在一个通用项目中,并在您的 Kotlin JVM 后端和 Kotlin JS 前端之间共享它。 您要求使用 Kotlin JS,它可以在没有多平台设置的情况下使用。因此,如果您不需要共享公共代码,您可以简单地添加单独的 koltin-js 模块,该模块会生成一个 javasctipt 文件 n build。这可以由 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 多平台功能更加强大。所以那里应该也是可以的。

    【讨论】:

    • 我明白了,谢谢你的回答。是的,我只是想用服务器端渲染构建一个传统的多页面应用程序,客户端会很瘦。
    猜你喜欢
    • 2021-01-26
    • 2016-10-21
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    • 2017-05-28
    • 2018-02-07
    相关资源
    最近更新 更多