是否有任何库允许我们从 Scala 代码运行 JavaScript 代码(作为 String
)? JavaScript 代码是在 JVM 中运行还是在生成的 JavaScript 解释器中运行并不重要。
最佳答案
如果要使用当前的JVM进程,使用JVM的ScriptEngine
。
import javax.script.ScriptEngineManager
val engine = new ScriptEngineManager().getEngineByMimeType("text/javascript")
val result = engine.eval("1 + 1")
println(result)
这对 JDK 7 使用 Rhino,对 JDK 8 使用 Nashorn。
Java 代码和 Nashorn 之间的交互相当无缝。
如果您想使用新进程,请将 ProcessBuilder
与外部 JS 运行时一起使用。
import java.io.ByteArrayInputStream
import scala.sys.process._
val input = new ByteArrayInputStream("console.log(1 + 1)".getBytes)
val result = ("node" #< input).!!
println(result)
如果 JS 对 CPU 使用率很高,这可能会给你最快的执行速度。它还允许 JS 使用 Node.js API,尽管它需要安装 Node.js。
如果你想使用当前的 JS 进程(即如果你正在使用 Scala.js ),
import scala.scalajs.js
val result = js.eval("1 + 1")
println(result)
关于javascript - 如何从 Scala (JVM) 中运行 JavaScript 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36764639/