问题标签 [kotlin-js-interop]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kotlin - 如何从 Kotlin Native Wasm 调用 JavaScript(在浏览器中)并传递参数?
请原谅我不知道我是否应该在一篇文章中或单独询问所有基本类型。
主要问题:
- 如何将一组浮点数从 Kotlin 传递给 JS?
- 其他“简单”类型呢?像一个浮点数,字符串?
- 其他类型
set
,map
甚至数据类呢?
我在 Kotlin 主文件的末尾有这个
如果cb()
定义中的类型与我从 传递的内容相匹配main()
,例如Int
,Float
那么cb()
从浏览器将获得正确的值。
如果我使用Any
,那么我将得到的只是一个整数(我猜应该是指向内存的指针)。
我试图检查heap
但无济于事如何检索我cb()
通过 Kotlin 传递给的 int、float 和字符串。
对于数组,我注意到jsinteropJsArray
包中有,但我找不到关于如何使用它的好的参考资料。
我注意到的一件事是我可以通过 Arenas 获得一个整数数组:
然后我将通过konan_dependencies.env.arenas
.
但是,我如何获得一组浮点数?请指教。
PS 我正在使用konan
我的插件build.gradle
来编译到 Wasm32。我通过将函数添加到in来传递callback
给 Wasm :window.konan.libraries
module.wasm.js
javascript - 在 JavaScript 中使用 Kotlin 标准库
我编写了一个 Kotlin 函数,该函数使用List<String>
. 该函数有一个注释,@JsName
以便我可以从 JavaScript 调用此函数。我无法确定我应该将什么传递给这个函数。传递 JavaScript 数组不起作用,因为 Kotlin-JS 代码调用iterator
对象。此外,Kotlin 标准库中的名称都是错误的;所以我不能以任何可靠的方式listOf
在 JavaScript 中调用 say 并将结果传递给函数。
那么问题是,如果 Kotlin 标准库名称被破坏,我们应该如何创建并传递给对象函数,而不是简单的类型(数字、字符串等)?
kotlin - 是否可以使用插值字符串模板调用 kotlin 的 js 函数?
现在,IntellJ 显示了一条红色波浪线:Argument must be a string constant
我已经搜索过,但我没有找到任何类似的问题。
由@alexey-romanov 解决
这很简单:
编译为:
kotlin - 如何在 kotlin/JS 中导入 JS 文件
我正在尝试将 THREE.js 与 kotlin/JS 一起使用。到目前为止它工作得很好,但是,我在如何导入 gLTFLoader 方面遇到了困难。文档说我应该这样做:
在科特林
在文件的开头工作。
这个
不起作用。和
也不起作用。在这两种情况下,我得到
找不到模块:错误:无法解析“/my_project_dir/build/js/packages/z-index/kotlin”中的“@three/examples/jsm/loaders/GLTFLoader”
所需的文件在 /my_project_dir/build/js/node_modules/three/examples/jsm/loaders/GLTFLoader.js Three.js 的主文件,显然可以找到,在 /my_project_dir/build/js/node_modules/三/src/Three.js。
如何进行所需的导入?
javascript - 在 KotlinJS 上实例化期望“new”关键字的 Javascript 类
考虑以下 javascript 代码(部分取自 Apollo Server 文档),它创建了一个 ApolloServer 实例并启动它。
现在考虑使用 KotlinJS 复制相同的行为。首先,Kotlin 没有“new”关键字,并且ApolloServer()
按预期调用,不会工作但会引发错误(TypeError: Class constructor ApolloServer cannot be invoked without 'new')。
声明一个外部类,如:
并将其设置为 ApolloServer 类型没有帮助。
我们如何复制“new ApolloServer()”调用?
kotlin-js - 使用 Kotlin JS 的 Javascript 结构表示
我的问题是关于在 KotlinJS 中创建 javascript 结构并使用它们调用外部模块。假设我们有以下 js 代码,我们想将它翻译成 KotlinJS。
我们如何使用 Kotlin JS 表示上面的配置结构?有没有一种简单的方法来处理结构/json Kotlin 方面?我们可以以某种方式声明该结构是动态的吗?使用 Kotlin 对象没有帮助。
javascript - 如何将带有子项的 react-bootstrap 组件导入 kotlin-js react app
我想在使用 kotlin-js 创建的反应网站中使用引导卡组件。该应用程序使用 kotlin-react 包装器和 react-bootstrap 库。
react-bootstrap 文档说使用 <Card.Body> 来放置内容。
到目前为止,我设法将 Card JavaScript 模块导入 kotlin-js。
有了这个,我可以在 RComponent 中使用 Card。
导致:
我还需要 CardBody 组件。
像这样的东西:
但是 CardBody 不是一个单独的 react-bootstrap 组件,可以像 Card 组件一样导入。它是 Card 组件内部的一个值。
打字稿定义文件Card.d.ts如下所示:
如果我使用dukat将 TypeScript 定义文件转换为 Kotlin 声明。它输出一个Card.module_react-bootstrap.kt文件
但这不会编译。
- 如何为内部包含子组件而不是单独的组件文件的组件编写 kotlin 声明文件?
- 如何在 RBuilder.render() 方法中使用这个组件?
javascript - 如何在 Kotlin 编译为 JavaScript 中创建“选项对象”(具有许多可选属性的对象)?
背景:JavaScript 中的选项对象
JavaScript 中的一个常见概念是这样的:
所以基本上我们有一个“选项”对象,其中包含许多可选的属性。
问题:如何与 Kotlin 进行交互?
在 Kotlin 中,我们可能更愿意使用具有默认值的命名参数。但是,我想与使用上述概念的现有 JavaScript 库进行交互。我如何描述和使用 Kotlin 中的那个库?当然,它应该尽可能类型安全。
到目前为止我尝试过的
这是我想出的:
这确实有效,它还为选项提供了代码完成,这很棒,虽然它不像原始 JavaScript 那样短,但考虑到它的长度,感觉还可以。但是...有更好的方法吗?没有 有没有办法相处unsafeCast
?
kotlin - 是否可以在 Kotlin/JS 项目中导入 JavaScript 文件?
如果我有一个myfile.js
如下调用的 JavaScript 文件:
如何将此文件导入 Kotlin/JS 项目并myJsFunc()
从 Kotlin 代码调用?
npm - 在 github actions CI 上构建 kotlinJs 应用
我在设置 github 操作来构建我的 kotlinJS 项目时遇到了一些问题?我有 js 运行时依赖项:
我得到错误:
我是否必须安装 npm(或某些源)才能在 github 操作上进行这项工作?还是我需要使用一些 github 操作来在 github 操作上构建 kotlinJS?这是我的 github 操作 yaml - js lib 已构建并作为资源复制到 jar https://github.com/sentinelweb/cuer/blob /ab00c7a7cd969eafa72b0d28bc5ba5c5c3e099d3/.github/workflows/android.yml
下面是依赖关系树 - 删除jsMain
依赖关系kotlinx-serialization-kotlinx-serialization-core-jslegacy
会导致运行时/webpack 错误 - 所以我不确定这个依赖关系是在 kjs 运行时中创建的 - 但可能必须通过使用其他一些库来删除它。只是删除它会破坏运行时/webpack