Server Plugin
JTE
Ktor 允许你通过安装 Jte 插件,在应用程序中使用 JTE 模板 作为视图。
添加依赖项
要使用 Jte
,你需要在构建脚本中包含 ktor-server-jte
artifact:
Kotlin
Groovy
XML
要处理
.kte
文件,你需要将gg.jte:jte-kotlin
artifact 添加到你的项目中。
安装 Jte
要将 Jte
插件安装到应用程序, 请将其传递给指定
模块
中的 模块允许你通过分组路由来组织应用程序。
install
函数。 下面的代码片段展示了如何安装 Jte
... - ... 在
embeddedServer
函数调用内部。 - ... 在显式定义的
module
内部,它是一个Application
类的扩展函数。
kotlin
kotlin
在 install
代码块内部,你可以配置如何加载 JTE 模板。
配置 Jte
配置模板加载
要加载 JTE 模板,你需要:
- 创建一个
CodeResolver
用于解析模板代码。例如,你可以配置DirectoryCodeResolver
从给定目录加载模板,或者配置ResourceCodeResolver
从应用程序资源加载模板。 - 使用
templateEngine
属性指定模板引擎,它使用已创建的CodeResolver
将模板转换为原生 Java/Kotlin 代码。
例如,下面的代码片段使 Ktor 能够在 templates
目录中查找 JTE 模板:
kotlin
import gg.jte.TemplateEngine
import gg.jte.resolve.DirectoryCodeResolver
import io.ktor.server.application.*
import io.ktor.server.jte.*
import java.nio.file.Path
fun Application.module() {
install(Jte) {
val resolver = DirectoryCodeResolver(Path.of("templates"))
templateEngine = TemplateEngine.create(resolver, gg.jte.ContentType.Html)
}
}
在响应中发送模板
假设你在 templates
目录中有 index.kte
模板:
html
@param id: Int
@param name: String
<html>
<body>
<h1>Hello, ${name}!</h1>
</body>
</html>
要将模板用于指定的路由,请按照以下方式将 JteContent
传递给 call.respond
方法:
kotlin
get("/index") {
val params = mapOf("id" to 1, "name" to "John")
call.respond(JteContent("index.kte", params))
}