避免在来自 HTML 的 Scala.js 调用中重复包名称

Avoid repeating package names in Scala.js calls from HTML

我在 HTML 页面中使用了很多这样的调用来调用我的 Scala.js 代码:

<table
  id="history"
  onclick="my.domain.project.name.ObjectName().handlerFunction(event.target)"
>

<script type="text/javascript">
  my.domain.project.name.ObjectName().otherFunction()
</script>

有什么方法可以避免重复输入包名,比如 Scala / Java imports?我想在我的 Scala 源代码中保留包名称,因为我也为 JVM 交叉编译它们并且不想在那里遇到包冲突。

有两种解决方法。第一个有点类似于 Scala 导入,在 JavaScript:

中完成
var ObjectName = my.domain.project.name.ObjectName;
ObjectName().otherFunction();

另一种是专门用更短的名字导出ObjectName,在Scala.js:

中完成
package my.domain.project.name

import scala.scalajs.js.annotation._

@JSExport("ObjectName")
object ObjectName { ... }

然后在 JavaScript:

ObjectName().otherFunction();