问题描述
我知道Scala.js可以转换为JS,但是它不支持反射。 有什么方法可以解释用户提供的Scala代码而又不会重复到服务器端?
如果无法以这种方式解释Scala,是否可以从Scala代码(即从将要编译的Scala代码)运行用户提供的JavaScript代码?
解决方法
第一个问题:不,那是不可能的。出于多种原因,Scala编译器无法编译为JavaScript,这使得无法在浏览器中编译用户提供的代码。
对于第二个问题:是,使用js.eval(dynamicJSCodeString)
。有关eval
和安全性的标准警告。
第一个问题:是的,这绝对是可能的。您只需要用ECMAScript或存在ECMAScript编译器的语言(例如TypeScript,CoffeeScript,Python,Ruby,Kotlin或当然是Scala)编写Scala解释器,或使用存在该解释器的语言来编写用ECMAScript或存在ECMAScript编译器的语言来编写……当然,您也可以链接这些方法。