こちらの記事で、説明したマルチプロジェクトの構成が前提です。
(Akka version 2.7.0 以降はライセンスが変更になって、有料になることを教えていただいたので、Akka-HTTPはせっかくだが変えたいところ。)
今回はScala.jsでJavascriptをトランスパイルするという話。
Scala.jsが使えるように、ScalaとNode.jsは入れましょう。
環境
OS: Windows 11
Java : Open JDK 17.0.7
Scala : 3.3.0
sbt: 1.9.0
node.js: v16.16.0
npm: 8.11.0
scala.js: 1.13.0
Akka : 2.7.0
Akka-HTTP: 10.5.2
addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16")
addSbtPlugin("com.vmunier" % "sbt-web-scalajs" % "1.2.0")
addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.2.0")
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.13.0")
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.0")
コード
今回トランスパイルするScalaコードは下記のよう。
package com.isageek.hakushimeita.xnote.client
import com.isageek.hakushimeita.xnote.shared.SharedMessages
import org.scalajs.dom
@main def ClientApplication(args: String*): Unit =
dom.document.getElementById("scalajsShoutOut").textContent = SharedMessages.itWorks
やること
こちらの記事を参考に
sbt fastLinkJS
を実行しただけ
client\target\scala-3.3.0\client-fastopt
配下にmain.js
が生成されました。
予定
欲を言えば生成されたmain.js
をshared
プロジェクト内に置けるようにしたい
またScalaだけで書くという、ネタみたいなプロジェクトを立ち上げているので、ScalaCSSを使って、CSSを書くなどしたい。
ScalaHTMLというのもあるそうなので、ScalaコードからHTMLを生成できそう。無ければ作るか(できるのか?)と思っていましたが、探せばあるものですね。みんなすごい…すごくないの自分だけ。
忘れていた。Scala.jsではLaminarフレームワークを使いたい。
Javascript, CSSのライブラリも使いたいところだが、上手くいくのだろうか…