Skip to content
Server Plugin

Pebble

필수 종속성: io.ktor:ktor-server-pebble

코드 예시: pebble

네이티브 서버
Ktor supports Kotlin/Native and allows you to run a server without an additional runtime or virtual machine.
지원: ✖️

Ktor는 Pebble 플러그인을 설치하여 애플리케이션 내에서 Pebble 템플릿을 뷰로 사용할 수 있도록 합니다.

종속성 추가

Pebble을(를) 사용하려면 빌드 스크립트에 ktor-server-pebble 아티팩트를 포함해야 합니다:

Kotlin
Groovy
XML

Pebble 설치

애플리케이션에 Pebble 플러그인을 설치하려면, 지정된

모듈
Modules allow you to structure your application by grouping routes.
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/templatesindex.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)))
}