1

scalatags.Text.all._scalatags.JsDom.all._パッケージの違いと目的は何 ですか?

公式の scalatags チュートリアルでは、以下を読むことができます。

// import scalatags.Text.all._
// OR
// import scalatags.JsDom.all._
html(
  head(
    script(src:="..."),
    script(
      "alert('Hello World')"
    )
  ),
  body(
    div(
      h1(id:="title", "This is a title"),
      p("This is a big paragraph of text")
    )
  )
)
And turns them into HTML like this:

<html>
    <head>
        <script src="..."></script>
        <script>alert('Hello World')</script>
    </head>
    <body>
        <div>
            <h1 id="title">This is a title</h1>
            <p>This is a big paragraph of text</p>
        </div>
    </body>
</html>
4

1 に答える 1

3

相違点については、DOMBackendおよびInternalsのスカラタグ ドキュメントで説明されています。

簡単に言うと、パッケージを使用する場合scalatags.Text、構造は直接レンダリングされますStringが、パッケージを使用する場合scalatags.JsDOM、構造はサブタイプ( scalatagsorg.scalajs.dom.raw.Elementの外部にあります - scalajsライブラリの一部です) にレンダリングされます。sを扱う場合、dom 構造を非常に低いレベルの抽象化でさらに操作することができます。Element

ここで、 を使用するとscalatags.Text.、次のh1ようにレンダリングされStringます。

    import scalatags.Text.all._
    val x: String = h1("some header").render
    //x is a String

しかし、ここで を使用するとscalatags.JsDom、次のh1ようにレンダリングされorg.scalajs.dom.raw.HTMLHeadingElementます。

    import scalatags.JsDom.all._

    val x: Heading = h1("some header").render
    //x is type of Heading, which is defined as:
    //type Heading = raw.HTMLHeadingElement
    //raw.HTMLHeadingElement is org.scalajs.dom.raw.HTMLHeadingElement
于 2016-09-25T08:55:29.270 に答える