[Day 8] 談 Ktor 的 HTML DSL

程式撰寫的規則都設定好了,接著,我們可以來看看怎麼寫我們要的功能了

今天我們來看看怎麼利用 kotlin 的 HTML DSL 來產生前端畫面。

HTML DSL

首先,我們要先來談談什麼是 DSL。

DSL,也就是 domain-specific language,指的是使用在特定領域的專門語言。在我們這裡,指的是 kotlin 生成 HTML 所設計的一套函式。

幸運的是,我們之前透過 Ktor plugin 建立專案時,已經幫我們產生了一個範例函式了:

get("/html-dsl") {
    call.respondHtml {
        body {
            h1 { +"HTML" }
            ul {
                for (n in 1..10) {
                    li { +"$n" }
                }
            }
        }
    }
}

可以看到,kotlin 的 HTML DSL 的宣告方式利用了 kotlin 的函式語法,雖然是一個個的函式,但是使用起來很像是一個個的標籤。

我們到 http://127.0.0.1:8080/html-dsl 的話,然後檢視原始碼的話,可以看到這段 DSL 產生的 HTML

<!DOCTYPE html>
<html>
  <body>
    <h1>HTML</h1>
    <ul>
      <li>1</li>
      <li>2</li>
      <li>3</li>
      <li>4</li>
      <li>5</li>
      <li>6</li>
      <li>7</li>
      <li>8</li>
      <li>9</li>
      <li>10</li>
    </ul>
  </body>
</html>

如果想知道更多, 可以看看 https://ktor.io/docs/html-dsl.html ,裡面會提到更多的函式以及寫法。