你实际上如何在 nodejs 中 运行 scalajs 代码?
How do you actually run scalajs code in nodejs?
我正在开发后端聊天服务器。它目前是用混乱的回调 javascript 编写的,所以我正在考虑将它移植到 scalajs。
我一直在浏览初学者指南,但我找不到如何将项目实际编译为单个 javascript 文件,我可以 运行 使用节点(例如 node ./target/scala_2.11/my-project.js
).
如何编译一个可以运行 直接作为节点程序而不是在浏览器中的文件?
我的代码再简单不过了:
package example
import scala.scalajs.js
import js.Dynamic.{ global => g }
object ScalaJSExample extends js.JSApp {
def main(): Unit = {
g.console.log("*** Did something ***")
println("Trying to print something...")
}
}
sbt run
正确打印:
*** Did something ***
Trying to print something...
但是当我 运行 sbt fullOptJS
然后 node ./target/scala-2.11/example-opt.js
什么都没有打印到控制台。
example-opt.js
不包含用于实际启动 代码的一行 JavaScript。它仅将 example.ScalaJSExample().main()
定义为函数,但不会 调用 它。
让它自动调用该函数的一种简单方法是指示 sbt 使用以下 sbt 设置在 .js
文件的末尾添加调用:
scalaJSOutputWrapper := ("", "example.ScalaJSExample().main();")
这样您就可以调用
node ./target/scala-2.11/example-opt.js
我正在开发后端聊天服务器。它目前是用混乱的回调 javascript 编写的,所以我正在考虑将它移植到 scalajs。
我一直在浏览初学者指南,但我找不到如何将项目实际编译为单个 javascript 文件,我可以 运行 使用节点(例如 node ./target/scala_2.11/my-project.js
).
如何编译一个可以运行 直接作为节点程序而不是在浏览器中的文件?
我的代码再简单不过了:
package example
import scala.scalajs.js
import js.Dynamic.{ global => g }
object ScalaJSExample extends js.JSApp {
def main(): Unit = {
g.console.log("*** Did something ***")
println("Trying to print something...")
}
}
sbt run
正确打印:
*** Did something ***
Trying to print something...
但是当我 运行 sbt fullOptJS
然后 node ./target/scala-2.11/example-opt.js
什么都没有打印到控制台。
example-opt.js
不包含用于实际启动 代码的一行 JavaScript。它仅将 example.ScalaJSExample().main()
定义为函数,但不会 调用 它。
让它自动调用该函数的一种简单方法是指示 sbt 使用以下 sbt 设置在 .js
文件的末尾添加调用:
scalaJSOutputWrapper := ("", "example.ScalaJSExample().main();")
这样您就可以调用
node ./target/scala-2.11/example-opt.js