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)指定されたルートにテンプレートを使用するには、PebbleContentをcall.respondメソッドに次のように渡します。
kotlin
get("/index") {
val sampleUser = User(1, "John")
call.respond(PebbleContent("index.html", mapOf("user" to sampleUser)))
}