我可以通过node.js运行一个scala应用程序吗?

问题描述:

我有一个scala库,我可以用它来构建一个scala应用程序。但我想在node.js中使用该库,或者我想从node.js控制该scala应用程序。我可以通过node.js运行一个scala应用程序吗?

这可以以某种方式完成吗?

+0

一种方法是将Scala库公开为一个API,Nodejs应用程序可以通过HTTP请求查询该API。 –

+0

这看起来很有趣,你能告诉我怎么做,因为我没有太多的scala经验! –

+1

Scala可以编译为JavaScript,因此根据库可能在node.js上本地运行它。 –

您可能想看看一个名为Scala.js的项目。假设您有要使用的库的源代码,您应该能够添加@JSExport annotations并将其编译为JavaScript以便在JavaScript环境中使用,包括Node.js和浏览器。

例如,看看这个样本斯卡拉类(从Scala.js文档):

class Foo(val x: Int) { 
    override def toString(): String = s"Foo($x)" 
} 

要导出类是使用从JavaScript,只是类和任何函数前加@JSExport要导出:现在

@JSExport 
class Foo(val x: Int) { 
    // Just as a note, @JSExport isn't required on toString. 
    @JSExport 
    override def toString(): String = s"Foo($x)" 
} 

,你应该能够require从手写文件,文件并使用它就像一个正常的JavaScript类!

const Foo = require('./compiled-file-name').Foo; 
var foo = new Foo(3); 
console.log(foo.toString()); 

免责声明:我从来没有使用Scala.js,这只是从文档中提取的。

+0

我试过了,结果出现了这些错误: 'code' [error]引用不存在的类edu.knowitall.openie.OpenIE $ [error]从tutorial.webapp.TutorialApp $调用。 () [error]使用JSExport导出到JavaScript [error]引用不存在的类edu.knowitall.openie.OpenIE [错误]从tutorial.webapp.TutorialApp $调用。 () [错误]使用JSExport导出到JavaScript '代码' 其实我试图从node.js中使用Open IE scala standalone版本,所以我被卡在这里! –