将函数导出到 scalajs 中的全局范围
export function to global scope in scalajs
关于 scalajs 和 javascript 的问题。
如何将函数标记为纯粹导出到全局范围?
顶级包中的给定 scala 对象
@JSExport
object Foo{
def apply(a: Int, b: Int): String = "bar"+a+b
}
我想将此 scala 代码编译成 javascript 并在全局范围内将此函数命名为 Foo
。换句话说,我想要一个类似于这样的 javascript:
function Foo(a,b) {
return 'bar'+a+b;
}
是否可以使用 scalajs?
我正在javascript中编写组件,将引用第三方API,不受我的影响。这就是为什么我只需要遵循他们的规则并在全局范围内提供 javascript 功能。
您目前无法在不执行某些代码的情况下执行此操作。但是您可以使用分配它的设置代码:
import scala.scalajs.js
object App extends js.JSApp {
def main(): Unit = {
js.Dynamic.global.anything = // your js.FunctionN
}
}
有一个未解决的问题 (#1381) 对此有语言支持。
这个问题的解决方案现在是顶级导出,如 now-closed 问题 #1381 中所述 - 要使用此功能,请在对象中用 @JSExportTopLevel
标记函数。
object A {
@JSExportTopLevel("foo")
def foo(x: Int): Int = x + 1
}
<Foo will be available from JavaScript's global namespace>
(官方文档见https://www.scala-js.org/doc/interoperability/export-to-javascript.html,在"Exporting top-level methods"下)
关于 scalajs 和 javascript 的问题。
如何将函数标记为纯粹导出到全局范围?
顶级包中的给定 scala 对象
@JSExport
object Foo{
def apply(a: Int, b: Int): String = "bar"+a+b
}
我想将此 scala 代码编译成 javascript 并在全局范围内将此函数命名为 Foo
。换句话说,我想要一个类似于这样的 javascript:
function Foo(a,b) {
return 'bar'+a+b;
}
是否可以使用 scalajs?
我正在javascript中编写组件,将引用第三方API,不受我的影响。这就是为什么我只需要遵循他们的规则并在全局范围内提供 javascript 功能。
您目前无法在不执行某些代码的情况下执行此操作。但是您可以使用分配它的设置代码:
import scala.scalajs.js
object App extends js.JSApp {
def main(): Unit = {
js.Dynamic.global.anything = // your js.FunctionN
}
}
有一个未解决的问题 (#1381) 对此有语言支持。
这个问题的解决方案现在是顶级导出,如 now-closed 问题 #1381 中所述 - 要使用此功能,请在对象中用 @JSExportTopLevel
标记函数。
object A {
@JSExportTopLevel("foo")
def foo(x: Int): Int = x + 1
}
<Foo will be available from JavaScript's global namespace>
(官方文档见https://www.scala-js.org/doc/interoperability/export-to-javascript.html,在"Exporting top-level methods"下)