将功能导出到scalajs中的全局范围

时间:2015-12-17 17:56:21

标签: javascript scala scala.js

关于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函数。

2 个答案:

答案 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)以获得语言支持。