关于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函数。
答案 0 :(得分:2)
此解决方案现在是顶级导出,如现已结束的问题#1381中所述 - 要使用此功能,请使用fclose
标记对象中的函数。
@JSExportTopLevel
object A {
@JSExportTopLevel("foo")
def foo(x: Int): Int = x + 1
}
(有关官方文档,请参阅https://www.scala-js.org/doc/interoperability/export-to-javascript.html,"导出顶级方法"。)
答案 1 :(得分:1)
如果不执行某些代码,您目前无法执行此操作。但您可以使用设置代码来分配它:
Some(Scala)
Some(is)
Some(great)
Some()
None
Some(FooBarBaz)
None
有一个问题是打开(#1381)以获得语言支持。