请考虑一个具有本机依赖关系的Scala.js库,该库作为纯JavaScript CommonJS模块实现。
库包含JavaScript依赖项的外观。正如预期的那样,外观包含了很多代码,如:
@JSImport("com", "Foo") @js.native
class Foo extends js.Object { ... }不幸的是,ScalaJS将Foo隐藏在全局范围之外。显而易见的解决方法是将@JSExport注释添加到另外两个注释中,但这会导致编译器错误。
为什么js.native与JSExport不兼容?在外观上添加对@JSExport的支持需要什么?
现在有工作可做吗?
发布于 2018-06-05 09:32:21
顶层类和对象上的@JSExport被废弃为在Scala.js 0.6.15中。你想要的实际上是@JSExportTopLevel。
@JSExportTopLevel与@JSImport/@JSGlobal不兼容没有根本原因。这并不是因为以下三件事:
实现此结果的另一种方法是导出存储导入结果的val,如下所示:
@js.native
@JSImport("com", "Foo")
class Foo extends js.Object { ... }
// 'private' not to pollute the Scala API with this object
private object Reexports {
@JSExportTopLevel("Foo") // or another name
val Foo = js.constructorOf[Foo]
}如果您只重新导出一个这样的导入,它肯定会更冗长一些,但是您可以在唯一的object Reexports中捆绑您想要的多少。
https://stackoverflow.com/questions/50689504
复制相似问题