Server Plugin
FreeMarker
所需依賴項: io.ktor:ktor-server-freemarker
程式碼範例: freemarker
原生伺服器支援: ✖️ Ktor 支援 Kotlin/Native,讓您無需額外的執行時間或虛擬機器即可執行伺服器。
Ktor 允許您透過安裝 FreeMarker 外掛程式,在應用程式中使用 FreeMarker 範本 作為視圖。
新增依賴項
要使用 FreeMarker
,您需要在建置腳本中包含 ktor-server-freemarker
artifact:
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)
要將範本用於指定的 route,請透過以下方式將 FreeMarkerContent
傳遞給 call.respond
方法:
kotlin
get("/index") {
val sampleUser = User(1, "John")
call.respond(FreeMarkerContent("index.ftl", mapOf("user" to sampleUser)))
}