Server Plugin
Pebble
필수 의존성: io.ktor:ktor-server-pebble
코드 예제: pebble
네이티브 서버(Native server) 지원: ✖️ Ktor supports Kotlin/Native and allows you to run a server without an additional runtime or virtual machine.
Ktor는 Pebble 플러그인을 설치하여 애플리케이션 내에서 Pebble 템플릿(Pebble templates)을 뷰(view)로 사용할 수 있게 해줍니다.
의존성 추가
Pebble을 사용하려면 빌드 스크립트에 ktor-server-pebble 아티팩트를 포함해야 합니다:
Kotlin
Groovy
XML
Pebble 설치
애플리케이션에 Pebble 플러그인을 설치하려면, 지정된
모듈(module)
내의 Modules allow you to structure your application by grouping routes.
install 함수에 전달하세요. 아래의 코드 스니펫은 Pebble을 설치하는 방법을 보여줍니다... - ...
embeddedServer함수 호출 내부에서. - ...
Application클래스의 확장 함수로 명시적으로 정의된module내부에서.
kotlin
kotlin
install 블록 내부에서, Pebble 템플릿 로딩을 위한 PebbleEngine.Builder를 구성(configure)할 수 있습니다.
Pebble 구성
템플릿 로딩 구성
템플릿을 로드하려면 PebbleEngine.Builder를 사용하여 템플릿 로드 방법을 구성해야 합니다. 예를 들어, 아래의 코드 스니펫은 Ktor가 현재 클래스패스(classpath)를 기준으로 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)지정된 라우트(route)에 템플릿을 사용하려면, 다음과 같이 call.respond 메서드에 PebbleContent를 전달하세요:
kotlin
get("/index") {
val sampleUser = User(1, "John")
call.respond(PebbleContent("index.html", mapOf("user" to sampleUser)))
}