如何导出共享案例类的属性

rap*_*aëλ 8 scala.js

我试图在服务器和客户端之间共享一个案例类.我在两端都使用了upickle.两端都可以很好地使用对象及其数据.

共享课程

case class Foo(var id : Long,var title: Description)
Run Code Online (Sandbox Code Playgroud)

但是我需要在客户端导出案例类的字段.我可以添加@ExportAll注释,但这意味着在服务器项目中引入scalajs库.

是否有更好的方式将成员id和title暴露给javascript.

TX,

sjr*_*jrd 9

将内容导出到JavaScript的正确方法是使用@JSExportAll注释.但是,您不能也不应该在服务器项目中提取Scala.js库.对于这个用例,我们有一个专用的JVM工件,scalajs-stubs您可以将其添加到JVM项目中,如下所示:

libraryDependencies += "org.scala-js" %% "scalajs-stubs" % scalaJSVersion % "provided"
Run Code Online (Sandbox Code Playgroud)

作为"提供的"依赖项,它不会在运行时出现.但它允许您编译JVM项目,即使它引用JSExportAll.

另请参见scalajs-stubs的ScalaDoc.