Javascript 从Node.js调用Scala.js的正确方法是什么?

Javascript 从Node.js调用Scala.js的正确方法是什么?,javascript,node.js,scala,scala.js,Javascript,Node.js,Scala,Scala.js,从Node.js调用Scala.js的正确方法是什么?下面的代码确实有效,但我不喜欢run.js中require行中的.scalajseportsnamespace。另外,让文本“someTest()called!”实际打印在终端上对我来说也很重要 run.js var fastopt = require('./scalajs-hello-world-fastopt').__ScalaJSExportsNamespace; var run = fastopt.RunMe(); run.main

从Node.js调用Scala.js的正确方法是什么?下面的代码确实有效,但我不喜欢run.js中require行中的.scalajseportsnamespace。另外,让文本“someTest()called!”实际打印在终端上对我来说也很重要

run.js

var fastopt = require('./scalajs-hello-world-fastopt').__ScalaJSExportsNamespace;
var run = fastopt.RunMe();

run.main();
console.log(run.helloWorld());
console.log(run.someTest());
RunMe.scala

import scala.scalajs.js.annotation._
import scala.scalajs.js.JSApp

@JSExportAll
object RunMe extends JSApp {

  def main(): Unit = {
    println("Hello from main()!")
  }

  def helloWorld() = "Hello from helloWorld()!"

  def someTest() = {
    println("someTest() called!")
    s"In Scala.js, (1.0).toString is ${(1.0).toString}!"
  }

}
输出

$ node run  
Hello from main()!
Hello from helloWorld()!
someTest() called!
In Scala.js, (1.0).toString is 1!

通过将以下内容添加到构建文件(从Scala.js 0.6.5开始),可以配置Scala.js以创建CommonJS样式的模块:


有关的详细信息。

从节点调用Scala.js的最佳方法是将Scala.js的导出命名空间设置为
exports
。这实际上将使它成为一个合适的节点模块。您使用的是哪个Scala.js版本?(它看起来更老了,IIRC
\uu scalajseportsnamespace
在更高版本中不再存在)。@gzm0:我使用的是Scala.js 0.6.4和Scala 2.11.7。应该是最新的版本。我从你那里找到了答案。还是这样吗?是否使用Grunt作为导出命名空间的前缀?(1) 是的,这仍然是一条路要走。你可以使用任何你喜欢的工具。我个人会使用sbt,只是因为我对它最熟悉。@gzm0您有一个sbt示例来为我预先编写代码段吗?@user1091344,这有意义吗?
scalaJSOutputWrapper := ("var __ScalaJSEnv = { exportsNamespace: exports };", "")