私はスカラライブラリを持っており、それを使ってスカラアプリケーションを構築することができます。しかし、私はそのライブラリをnode.jsで使いたいのですが、node.jsからscalaアプリケーションを制御したいのです。node.jsからscalaアプリケーションを実行できますか?
何とかできますか?
私はスカラライブラリを持っており、それを使ってスカラアプリケーションを構築することができます。しかし、私はそのライブラリをnode.jsで使いたいのですが、node.jsからscalaアプリケーションを制御したいのです。node.jsからscalaアプリケーションを実行できますか?
何とかできますか?
Scala.jsというプロジェクトをご覧ください。使用するライブラリのソースコードがあると仮定すると、@JSExport
annotationsを追加してJavaScriptにコンパイルして、Node.jsやブラウザを含むJavaScript環境で使用できるようにする必要があります。
例えば、(Scala.jsのドキュメントから)このサンプルScalaのクラスを見てみましょう:
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)"
}
さて、あなたは手で書かれたファイルからファイルや普通のJavaScriptクラスと同じように使用require
することができるはず!
const Foo = require('./compiled-file-name').Foo;
var foo = new Foo(3);
console.log(foo.toString());
免責事項:私はScala.jsを使用したことが一度もありません。これは単にドキュメントから取られたものです。
私はそれを試み、これらのエラーで終わります: 'code' [エラー]存在しないクラスを参照していますedu.knowitall.openie.OpenIE $ [エラー] tutorial.webapp.TutorialApp $から呼び出されました。
1つの方法は、nodejsアプリケーションがHTTP要求を介して照会できるAPIとしてScalaライブラリを公開することです。 –
これは興味深いようですが、私はscalaで多くの経験をしていないので、それがどのようにできるか教えてください! –
Scalaはjavascriptにコンパイルすることができるので、ライブラリによってはnode.jsでネイティブに実行することができます –