Scala.js可以自行编译吗?

时间:2015-04-03 01:38:29

标签: scala.js

我正在阅读教程,看起来Scala.js只能在sbt下运行。

是否有Scala.js(或一般的Scala环境)不是用Scala编写的?或者由于其他原因,所有必要的部分都不能通过Scala.js?我错过了什么?

1 个答案:

答案 0 :(得分:7)

大多数情况下,这是因为Scala编译器使用了许多尚未移植到Scala.js的JDK部分。其中一些部分,尤其与读取文件(在类路径和源文件中)有关,这些部分无法在JavaScript中实现(尽管可以在一个特定平台上实现,例如Node.js)。

还有对ASM的依赖,ASM是一个用Java编写的Java字节码操作库。即使Scala.js编译为JavaScript,Java字节码仍然用于单独编译(在先前编译的部分中进行符号查找,例如库)。

因此,即使Scala.js特定部分是以独立于平台的方式编写的(例如,我们测试Scala.js优化器可以自我优化),scalac中有很多部分无法解决Scala.js中的盒子。