Skip to content
Server Plugin

Pebble

必須の依存関係: io.ktor:ktor-server-pebble

コード例: pebble

Nativeサーバー
KtorはKotlin/Nativeをサポートしており、追加のランタイムや仮想マシンなしでサーバーを実行できます。
のサポート: ✖️

Ktorでは、Pebbleプラグインをインストールすることで、アプリケーション内でPebbleテンプレートをビューとして使用できます。

依存関係の追加

Pebbleを使用するには、ビルドスクリプトにktor-server-pebbleアーティファクトを含める必要があります。

Kotlin
Groovy
XML

Pebbleのインストール

アプリケーションにPebbleプラグインをインストールするには、指定された

モジュール
モジュールを使用すると、ルートをグループ化してアプリケーションを構造化できます。
install関数に渡します。 以下のコードスニペットは、Pebbleをインストールする方法を示しています...

  • ... embeddedServer関数呼び出し内で。
  • ... Applicationクラスの拡張関数である明示的に定義されたmodule内で。
kotlin
kotlin

installブロック内では、PebbleテンプレートをロードするためのPebbleEngine.Builder構成できます。

Pebbleの構成

テンプレートのロードを構成

テンプレートをロードするには、PebbleEngine.Builderを使用してテンプレートのロード方法を構成する必要があります。たとえば、以下のコードスニペットは、Ktorが現在のクラスパスに対するtemplatesパッケージ内のテンプレートを探すように設定します。

kotlin
import io.ktor.server.application.*
import io.ktor.server.pebble.*
import io.ktor.server.response.*

fun Application.module() {
    install(Pebble) {
        loader(ClasspathLoader().apply {
            prefix = "templates"
        })
    }
}

レスポンスでテンプレートを送信

resources/templates内にindex.htmlテンプレートがあるとします。

html
<html>
    <body>
        <h1>Hello, {{user.name}}</h1>
    </body>
</html>

ユーザーのデータモデルは次のようになります。

kotlin
data class User(val id: Int, val name: String)

指定されたルートにテンプレートを使用するには、PebbleContentcall.respondメソッドに次のように渡します。

kotlin
get("/index") {
    val sampleUser = User(1, "John")
    call.respond(PebbleContent("index.html", mapOf("user" to sampleUser)))
}