0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Scala.jsを使ったコードからJavascriptコードを生成

Posted at

こちらの記事で、説明したマルチプロジェクトの構成が前提です。
(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

project/plugins.sbt
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コードは下記のよう。

client/src/main/scala/com/isageek/hakushimeita/xnote/client/ClientApplication.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.jssharedプロジェクト内に置けるようにしたい
またScalaだけで書くという、ネタみたいなプロジェクトを立ち上げているので、ScalaCSSを使って、CSSを書くなどしたい。
ScalaHTMLというのもあるそうなので、ScalaコードからHTMLを生成できそう。無ければ作るか(できるのか?)と思っていましたが、探せばあるものですね。みんなすごい…すごくないの自分だけ。
忘れていた。Scala.jsではLaminarフレームワークを使いたい。
Javascript, CSSのライブラリも使いたいところだが、上手くいくのだろうか…

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?