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