Ser*_*hko 6 javascript global-variables kotlin kotlin-js-interop kotlin-js
我在KotlinJs项目中创建的每个函数和变量都进入了一个模块.但我需要在全球范围内定义一些功能.
我使用p5js库(纯js).它允许用户在全局范围内定义事件处理函数.我正在尝试在这个项目中使用KotlinJS.但我不知道如何创建全局函数来处理p5js的事件.我所有的Kotlin函数都在模块内部.要调用我的Kotlin代码,我需要指定全名mymodule.draw()
目前,我必须使用全局函数创建一个额外的纯JS代码层,将执行转换为kotlin函数,如下所示:
function setup() {
mymodule.setup();
}
function draw() {
mymodule.draw();
}
Run Code Online (Sandbox Code Playgroud)
这种方法的问题是很多样板和重复代码.
如果这对某人有用,我将在这里留下另一个解决方法:
import kotlin.browser.window
fun main() {
window.asDynamic()["setup"] = ::setup
window.asDynamic()["draw"] = ::draw
}
fun setup() {}
fun draw() {}
Run Code Online (Sandbox Code Playgroud)
它实际上做什么,它像往常一样在 kotlin 模块中创建函数,然后将它们分配给 window 对象,这使其成为全局对象。
该解决方案仍然不理想,因为它需要为每个功能手动分配。至少在 Kotlin 项目中是正确的,不需要维护单独的纯 js 文件。也许可以创建一个注释并利用 kotlin 反射(不知道 KotlinJS 是如何支持的)。
虽然这个解决方案对我@JsNonModule external有用,但我想要一些开箱即用的解决方案,就像他们对函数所做的那样。
| 归档时间: |
|
| 查看次数: |
258 次 |
| 最近记录: |