【发布时间】:2019-07-03 21:28:41
【问题描述】:
我在 KotlinJs 项目中创建的每个函数和变量都会进入一个模块。但是我需要在全局范围内定义一些函数。
我使用 p5js 库(纯 js)。它允许用户在全局范围内定义事件处理函数。我试图在这个项目中使用 KotlinJS。但我不知道如何创建全局函数来处理 p5js 的事件。我所有的 Kotlin 函数都在模块内部。要调用我的 Kotlin 代码,我需要指定全名 mymodule.draw()
目前我必须使用全局函数制作额外的纯 JS 代码层,将执行转换为 kotlin 函数,如下所示:
function setup() {
mymodule.setup();
}
function draw() {
mymodule.draw();
}
这种方法的问题在于大量样板代码和重复代码。
【问题讨论】:
-
当库调用必须在全局范围内形成函数的代码时,看起来这是非常规的用例。 IMO,Kotlin 应该坚持生成惯用的 JS 模块,简单的 JS 胶水层是最好的方法。让 JS 适合你的 Kotlin 比让 Kotlin 适合你的 JS 更容易。
-
看起来有一个instance mode 不需要全局函数
标签: javascript kotlin global-variables kotlin-js-interop kotlin-js