首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >scala.js和jscala有什么不同?

scala.js和jscala有什么不同?
EN

Stack Overflow用户
提问于 2014-03-03 12:19:09
回答 2查看 3.3K关注 0票数 20

在JavaScript中有两个工具可以编译Scala代码:Scala.jsJScala。它们看起来都很棒,并且可以与非平凡的Scala代码一起工作。

它们之间的技术差异是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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 /字符串。这对于生成要动态发送到客户端的代码片段很有用。

因此,主要的决策标准是:

  • 如果要将Web应用程序的客户端编写为Scala应用程序,请使用Scala.js
  • 如果要从以Scala编写的服务器端生成JavaScript代码片段,请使用JScala

有关这两个工具的更详细的比较,请访问http://www.sebnozzi.com/84/scala-to-javascript-comparison/

票数 29
EN

Stack Overflow用户

发布于 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博客。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22138601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档