是否可以将 Scala 编译(转译)到浏览器,同时保持解释用户动态提供的 Scala 代码的能力?

Is it possible to compile (transpile) Scala to the browser, keeping the ability to interpret Scala code provided dynamically by the user?

我知道Scala.js可以转译成JS,但是不支持反射。 有什么方法可以解释用户提供的 Scala 代码,而无需在服务器端重复出现?

如果无法以这种方式解释 Scala,是否可以从 Scala 代码(即从将被转译的 Scala 代码)中 运行 用户提供的 JavaScript 代码?

第一个问题:不,那是不可能的。由于多种原因,Scala 编译器无法编译为 JavaScript,这导致无法在浏览器中编译 user-provided 代码。

第二个问题:是的,js.eval(dynamicJSCodeString)。关于 eval 和安全的标准警告适用。

对于第一个问题:是的,那是绝对有可能的。您只需要用 ECMAScript 或存在 ECMAScript 编译器的语言(例如 TypeScript、CoffeeScript、Python、Ruby、Kotlin,当然还有 Scala)编写 Scala 解释器,或者在一种存在解释器的语言,它是用 ECMAScript 编写的,或者是用存在 ECMAScript 编译器的语言编写的……当然你也可以链接这些方法。