【发布时间】:2016-02-11 04:21:36
【问题描述】:
我在Play with ScalaJS example 之后有一个基本的项目设置。我发现使用相同模式的其他示例将案例类(模型)与传统上是它们的伴随对象分开。也就是说,案例类将存在于“共享”子项目中,而“伴随对象”(实际上只是一些对象)将存在于“服务器”子项目中。
最好将这两个保存在同一个文件中(即将重要的东西放在真正的伴随对象中),因为在那里放置类型类实例并让它们正确解析非常方便。例如:
case class User(id: Int, name: String)
object User {
val default = User(1, "Guest")
// I need this for the back-end, but don't need to export to JS
implicit val reads: Reads[User] = ...
}
不幸的是,这会导致链接错误,因为Reads 类型仅存在于 JVM 上(只是其中之一)。但是,如果我将 val reads 移动到不同的文件中,Reads[User] 的隐式解析将在整个“服务器”子项目中中断,而不会添加显式导入(这会很烦人)。
是否可以在 ScalaJS 导出中显式忽略某些属性,同时仍然允许它们为 JVM 编译?我希望导出 User 案例类,甚至可能导出其伴随对象的其他属性,但仅在 JVM 上存在的其他属性可以在不中断前端的情况下被忽略。
【问题讨论】:
标签: scala.js