scala.js 与 jscala 有什么区别?

2023-12-25

有两个工具可以直接在 JavaScript 中编译 Scala 代码:Scala.js http://www.scala-js.org/ and JScala https://github.com/nau/jscala。 它们看起来都很棒,并且可以使用重要的 Scala 代码。

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


实际上不止两个工具,但 Scala.js 和 JScala 确实是仍在积极开发的两个工具。

区别是根本性的:Scala.js 是从 Scala 到 JavaScript 的编译器,而 JScala 是基于宏的 DSL,用于生成 JavaScript 代码片段。

正如 @Gaurav 在他的回答中解释的那样,Scala.js 是常规的 Scala 编译器,但它生成 JavaScript 代码而不是 JVM 字节码。您编写的 Scala 代码永远不会由 JVM 运行。您的所有 Scala 代码都会转换为 JavaScript。因此,它支持整个 Scala 语言,包括集合库等。这对于将整个客户端编写为 Scala 应用程序非常有用。

另一方面,使用 JScala,您的应用程序的大部分内容(至少是外部调用的所有内容)javascript宏)仍然在 JVM 上运行。该宏将其内部类似 Scala 的代码重写为相应的 JavaScript AST(或直接作为代码字符串)。这意味着当 JVM 执行代码时,程序会(在运行时)生成 JavaScript AST/字符串。这对于生成要动态发送到客户端的代码片段非常有用。

主要的决策标准是:

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

scala.js 与 jscala 有什么区别? 的相关文章