发布于 2014-03-03 16:54:09
实际上不止有两个工具,但Scala.js和JScala确实是仍在积极开发中的两个工具。
区别是根本的: Scala.js是一个从Scala到JavaScript的编译器,而JScala是一个基于宏的领域特定语言,用于生成JavaScript代码片段。
正如@Gaurav在他的回答中解释的那样,Scala.js是常规的Scala编译器,但它发出的是JavaScript代码而不是JVM字节码。您编写的Scala代码永远不会由JVM运行。你所有的Scala代码都会被翻译成JavaScript。因此,它支持整个Scala语言,包括集合库。这对于将整个客户端编写为Scala应用程序非常有用。
另一方面,使用JScala,您的大多数应用程序(至少对javascript
宏调用之外的所有内容)仍然在JVM上运行。宏将其中类似Scala的代码重写为相应的JavaScript AST (或直接作为代码字符串)。这意味着当JVM在那里执行代码时,程序会(在运行时)生成一个JavaScript /字符串。这对于生成要动态发送到客户端的代码片段很有用。
因此,主要的决策标准是:
有关这两个工具的更详细的比较,请访问http://www.sebnozzi.com/84/scala-to-javascript-comparison/
发布于 2014-03-03 12:20:52
js-scala是用于生成JavaScript代码的Scala库,而scala.js是Scala编译器的JavaScript后端。
scala.js会将Scala代码编译成JavaScript代码。它只是一个普通的Scala编译器,它获取Scala源文件并生成JavaScript代码,而不是JVM字节码。
.scala| === scalac ===> | .js
另一方面,js-scala是一个Scala库,提供可组合的JavaScript代码生成器。您可以在通常的Scala程序中使用它们来编写JavaScript程序生成器。Scala程序使用常用的Scala编译器编译成JVM字节码,这个程序的执行会生成一个JavaScript程序。
.scala| === scalac ===> |.class | === java ===> | .js
有关更多详细信息,我推荐js-scala http://julien.richard-foy.fr/blog/2013/12/19/js-scala-and-scala-js/的作者之一的readint博客。
https://stackoverflow.com/questions/22138601
复制相似问题