2017-03-13 124 views
0

我有一個scala庫,我可以用它來構建一個scala應用程序。但我想在node.js中使用該庫,或者我想從node.js控制該scala應用程序。我可以通過node.js運行一個scala應用程序嗎?

這可以以某種方式完成嗎?

+0

一種方法是將Scala庫公開爲一個API,Nodejs應用程序可以通過HTTP請求查詢該API。 –

+0

這看起來很有趣,你能告訴我怎麼做,因爲我沒有太多的scala經驗! –

+1

Scala可以編譯爲JavaScript,因此根據庫可能在node.js上本地運行它。 –

回答

0

您可能想看看一個名爲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版本,所以我被卡在這裏! –

相關問題