2016-09-25 5 views
1

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

official scalatags tutorialでは、読むことができます:

// 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> 

答えて

2

違いは部品DOMBackendInternalsにscalatagsのマニュアルに記載されています。

shortuctsで

scalatags.Textパッケージを使用して、構造がStringに直接レンダリングが、scalatags.JsDOMパッケージを使用する場合、構造はorg.scalajs.dom.raw.Elementのサブタイプにレンダリングする(外部scalatagsのである - それはscalajsライブラリの一部です)。 Elementを扱うときには、さらにmanipulate dom structure very low level of abstractionが可能です。ここで

scalatags.Text.を使用した場合、h1Stringにレンダリング:

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

しかし、scalatags.JsDomを使用して、h1org.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 
関連する問題