Server Plugin
Velocity
必要相依性:io.ktor:ktor-server-velocity
程式碼範例: velocity
原生伺服器 支援:✖️ Ktor 支援 Kotlin/Native,允許您在沒有額外執行階段或虛擬機的情況下執行伺服器。
Ktor 透過安裝 Velocity 外掛程式,讓您能在應用程式中使用 Velocity 範本 作為視圖。
新增相依性
若要使用 Velocity,您需要在建置指令碼中包含 ktor-server-velocity 構件:
Kotlin
Groovy
XML
安裝 Velocity
若要將 Velocity 外掛程式安裝到應用程式,請將其傳遞給指定
模組
中的 模組允許您透過對路由進行分組來建構應用程式結構。
install 函式。 下方的程式碼片段展示了如何安裝 Velocity ... - ... 在
embeddedServer函式呼叫內。 - ... 在明確定義的
module內,該模組是Application類別的擴充函式。
kotlin
kotlin
此外,您也可以安裝 VelocityTools 外掛程式,以便獲得新增標準和自訂 Velocity 工具 的能力。
配置 Velocity
配置範本載入
在 install 區塊內,您可以配置 VelocityEngine。例如,如果您想使用來自 classpath 的範本,請為 classpath 使用資源載入器:
kotlin
import io.ktor.server.application.*
import io.ktor.server.velocity.*
import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
import org.apache.velocity.runtime.RuntimeConstants
fun Application.module() {
install(Velocity) {
setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath")
setProperty("classpath.resource.loader.class", ClasspathResourceLoader::class.java.name)
}
}在回應中傳送範本
假設您在 resources/templates 中有一個 index.vl 範本:
html
<html>
<body>
<h1>Hello, $user.name</h1>
</body>
</html>使用者的資料模型如下所示:
kotlin
data class User(val id: Int, val name: String)若要將範本用於指定的 路由,請按以下方式將 VelocityContent 傳遞給 call.respond 方法:
kotlin
get("/index") {
val sampleUser = User(1, "John")
call.respond(VelocityContent("templates/index.vl", mapOf("user" to sampleUser)))
}新增 Velocity 工具
如果您已安裝了 VelocityTools 外掛程式,則可以在 install 區塊內存取 EasyFactoryConfiguration 執行個體,以新增標準和自訂的 Velocity 工具,例如:
kotlin
install(VelocityTools) {
engine {
// 引擎配置
setProperty("resource.loader", "string")
addProperty("resource.loader.string.name", "myRepo")
addProperty("resource.loader.string.class", StringResourceLoader::class.java.name)
addProperty("resource.loader.string.repository.name", "myRepo")
}
addDefaultTools() // 新增預設工具
tool("foo", MyCustomTool::class.java) // 新增自訂工具
}