After integrating basic scalajs support into the project (part 1), we now want to include the following libraries (described here):
- dom for manipulating the DOM structure of the HTML page
- jquery to have an easier access to the DOM. And of course, we want to use the shortcut "
$
" instead of the verbosejQuery
To do so, add the following settings to your mainprojectfolder/build.sbt
file describing the js project defined in the last article.
lazy val js = (project in file("js")).enablePlugins(ScalaJSPlugin).settings( libraryDependencies += "org.scala-js" %%% "scalajs-dom" % "0.8.0", libraryDependencies += "be.doeraene" %%% "scalajs-jquery" % "0.8.0" )
This is the safest way to ensure that the libraries are imported.
Now in your scala file compiling to javascript (myscript.scala
), you can include these import statements:
package your.package import org.scalajs.dom import dom.document import org.scalajs.jquery.{ jQuery => $ } import scala.scalajs.js.annotation.JSExport object YourApp extends JSApp { @JSExport def addClickedMessage(): Unit = { val message = "You clicked the button!" //appendPar(document.body, message) (DOM version) $("body").append(s"<p>$message</p>") } def main(): Unit = { println("Hello world!") } }
Now in your html you can include something like this, and this will work:
<button id="click-me-button" type="button" onclick="your.package.YourApp().addClickedMessage()">Click me!</button>
I hope that you will enjoy Scala-js as much as I do !