Server Plugin
FreeMarker
必要相依性:io.ktor:ktor-server-freemarker
程式碼範例: freemarker
原生伺服器 支援:✖️ Ktor 支援 Kotlin/Native,允許您在不使用額外執行階段或虛擬機的情況下執行伺服器。
Ktor 透過安裝 FreeMarker 外掛程式,允許您在應用程式中將 FreeMarker 範本 作為檢視 (views) 使用。
新增相依性
若要使用 FreeMarker,您需要在組建指令碼中包含 ktor-server-freemarker 成品:
Kotlin
Groovy
XML
安裝 FreeMarker
若要將 FreeMarker 外掛程式安裝到應用程式,請將其傳遞給指定
模組
中的 模組允許您透過分組路由來建構應用程式。
install 函式。 下方的程式碼片段展示了如何安裝 FreeMarker ... - ... 在
embeddedServer函式呼叫內。 - ... 在明確定義的
module內,該模組是Application類別的擴充函式。
kotlin
kotlin
在 install 區塊中,您可以設定所需的 TemplateLoader 以載入 FreeMarker 範本。
設定 FreeMarker
設定範本載入
若要載入範本,您需要將所需的 TemplateLoader 型別指派給 templateLoader 屬性。例如,下方的程式碼片段使 Ktor 能夠在相對於目前類別路徑的 templates 套件中尋找範本:
kotlin
import freemarker.cache.*
import io.ktor.server.application.*
import io.ktor.server.freemarker.*
fun Application.module() {
install(FreeMarker) {
templateLoader = ClassTemplateLoader(this::class.java.classLoader, "templates")
}
}在回應中傳送範本
假設您在 resources/templates 中有一個 index.ftl 範本:
html
<html>
<body>
<h1>Hello, ${user.name}!</h1>
</body>
</html>使用者的資料模型如下所示:
kotlin
data class User(val id: Int, val name: String)若要在指定的路由中使用該範本,請按以下方式將 FreeMarkerContent 傳遞給 call.respond 方法:
kotlin
get("/index") {
val sampleUser = User(1, "John")
call.respond(FreeMarkerContent("index.ftl", mapOf("user" to sampleUser)))
}