在纯JS的Web应用程序中使用Kotlin Multiplatform库

3
我有一个针对Kotlin/JVM和Kotlin/JS(浏览器)的Kotlin多平台库,其中包含一些领域类和业务逻辑,需要在前端和后端之间共享。在基于Java的后端项目中将该多平台库作为简单的Gradle/Maven依赖项使用相对容易且无缺陷。然而,我想使用纯Javascript或Typescript编写前端,而不是Kotlin,但调用Kotlin多平台库中的方法和类(我也已经为JS构建了它)。这是否可能,如何实现?

你找到任何答案了吗?我也在尝试做同样的事情,我的情况是需要暴露一个挂起函数(它可以是JavaScript中的await/async函数),并且还需要一种使用Flow的方法。我可以在iOS上做到这一点,但无法在JavaScript上实现 :( - Alan Donizete
1个回答

0

以下的 build.gradle.kts 配置对我有效:

kotlin {
    js(LEGACY) {
        browser {
            webpackTask {
                outputFileName = "myLibrary.js"
                output.library = "myLibrary"
                output.libraryTarget = "var"
            }
        }
        binaries.executable()
    }
}

看起来 [output.library][1][output.libraryTarget][2] 分别对应于它们在 Webpack 配置中的值。Webpack 文档指出,设置 output.libraryTarget = "var" 将会把模块暴露为全局变量。而 output.library = "myLibrary" 则表示该全局变量将被命名为 myLibrary

然后,可以通过在项目的 index.html 文件中使用 script 标签导入该库,例如:

<!DOCTYPE html>

<html>
<body>

<script type="text/javascript" src="path/to/myProject.js"></script>

</body>
</html>

然后,使用在创建的全局对象中完全限定的包名称调用库函数,例如:

myLibrary.com.my.library.doStuff()

希望这能帮到你!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接