Kitura

APIDoc Build Status - Master macOS Linux Apache 2 Slack Status

Kitura-TemplateEngine

Kitura 模板引擎抽象层。

Kitura-TemplateEngine 提供了一个 TemplateEngine 协议,用于统一多个模板引擎的 API,并将它们与 Kitura 的内容生成 API 集成。在运行时,模板引擎将模板文件中的变量替换为实际值,并将模板转换为发送给客户端的 HTML 文件。这种方法使得使用集成的 Swift 代码设计 HTML 页面变得更加容易。

插件列表

Kitura-TemplateEngine 是一个易于学习、易于使用的框架,它附带一组已实现的插件

用法

我们不希望您需要导入 Kitura-TemplateEngine,因为它会被上述插件自动作为依赖项拉取(您可以在下面的 示例 中看到一个例子) - 除非您正在为 Kitura-TemplateEngine 实现一个新的插件。如果您确实需要直接将 Kitura-TemplateEngine 添加为依赖项,您可以按照以下步骤操作

添加依赖项

Kitura-TemplateEngine 包添加到应用程序的 Package.swift 文件中的依赖项中。将 "x.x.x" 替换为最新的 Kitura-TemplateEngine 版本

.package(url: "https://github.com/Kitura/Kitura-TemplateEngine.git", from: "x.x.x")

KituraTemplateEngine 添加到您的目标依赖项中

.target(name: "example", dependencies: ["KituraTemplateEngine"]),

导入包

import KituraTemplateEngine

示例

以下代码示例使用了 Kitura-StencilTemplateEngine,然而,由于这是一个抽象层,Stencil 可以被替换为任何受支持的模板引擎。

如果您正在使用 Stencil,在您的 Package.swift 文件中,您将需要

您还需要将 KituraStencil 添加到您编写 Swift 代码的文件中

import KituraStencil

以下代码初始化了一个 Stencil 模板引擎,并将其添加到 Kitura 路由器。这将使用模板引擎的默认文件扩展名渲染文件,在本例中,这些文件将是 .stencil 文件。

router.add(templateEngine: StencilTemplateEngine())

这里我们展示了如何渲染不具有与所选模板引擎相同的默认文件扩展名的文件。在本例中,useDefaultFileExtension 设置为 false,因此默认文件扩展名(在本例中为 .stencil)将不会被渲染,并且扩展名为 .example 的文件将被渲染。

router.add(templateEngine: StencilTemplateEngine(), forFileExtensions: [".example"], useDefaultFileExtension: false)

如果存在任何文件扩展名与已添加到路由器的任何模板引擎都不匹配的文件,路由器将使用默认模板引擎渲染该文件。您可以按如下方式设置路由器的默认模板引擎

router.setDefault(templateEngine: StencilTemplateEngine())

以下示例将渲染 Stencil 模板 example.stencil 并将其添加到我们路由器的响应中。模板文件将从默认位置(即 Views 文件夹)检索。上下文变量允许您将数据传递到模板引擎,并且必须是有效的 JSON。

router.get("/example") { request, response, next in
    var context: [String: Any] = ["key" : "value"]
    try response.render("example.stencil", context: context)
    next()
}

API 文档

有关更多信息,请访问我们的 API 参考

社区

我们热爱讨论服务器端 Swift 和 Kitura。加入我们的 Slack 与团队会面!

许可证

此库在 Apache 2.0 许可下获得许可。完整许可文本可在 LICENSE 中找到。