Server Plugin
FreeMarker
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)
要将模板用于指定的路由,请将 FreeMarkerContent
以以下方式传递给 call.respond
方法:
kotlin
get("/index") {
val sampleUser = User(1, "John")
call.respond(FreeMarkerContent("index.ftl", mapOf("user" to sampleUser)))
}