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)))
}