Scala.js
Introduction#
Scala.js is a port from Scala that compiles to JavaScript, which at the end will be running outside the JVM. It has benefits as strong typing, code optimization at compile time, full interoperability with JavaScript libraries.
console.log in Scala.js
println("Hello Scala.js") // In ES6: console.log("Hello Scala.js");Fat arrow functions
val lastNames = people.map(p => p.lastName)
// Or shorter:
val lastNames = people.map(_.lastName)Simple Class
class Person(val firstName: String, val lastName: String) {
def fullName(): String =
s"$firstName $lastName"
}Collections
val personMap = Map(
10 -> new Person("Roger", "Moore"),
20 -> new Person("James", "Bond")
)
val names = for {
(key, person) <- personMap
if key > 15
} yield s"$key = ${person.firstName}"Manipulating DOM
import org.scalajs.dom
import dom.document
def appendP(target: dom.Node, text: String) = {
val pNode = document.createElement("p")
val textNode = document.createTextNode(text)
pNode.appendChild(textNode)
target.appendChild(pNode)
}Using with SBT
Sbt dependency
libraryDependencies += "org.scala-js" %%% "scalajs-dom" % "0.9.1" // (Triple %%%)Running
sbt runRunning with continous compilation:
sbt ~runCompile to a single JavaScript file:
sbt fastOptJS