Vaux

Swift Version Swift PM Compatible Apache License

Vaux 是一个允许你使用 Swift 生成 HTML 的库。它包含一个用 Swift 编写的 HTML 领域特定语言 (DSL),其目的是允许开发者使用 Swift 来编写 HTML。

警告: 如果你正在阅读本文,那么这是一个基于 Swift 5.1 的 alpha 软件,目前只能从 swift.org 或者 Xcode 11 Beta 下载。 这是一个名副其实的进行中的工作。

需求

动机

在 WWDC2019 上,苹果公司宣布了 Swift 中一项名为 Function Builders 的新功能。 Vaux 的核心功能,包括 HTML 的 Swift DSL,很大程度上受到了这个提案和相应的例子的启发。 因此,该库的存在有两个主要目标

在这个库的首次开源发布时,它站在巨人的肩膀上,非常感谢。

例子

假设你想编写以下 HTML

<html>
  <head>
    <title>
      Page title
    </title>
  </head>
  <body>
    <div>
      Page body
    </div>
  </body>
</html>

你可以先编写一个函数,使用 Vaux 返回 HTML,而不是手动编写它

var pageTitle = "Page title"
var pageBody = "Page body"

func simplePage() -> HTML {
  html {
    head {
      title(pageTitle)
    }
    body {
      div {
        pageBody
      }
    }
  }
}

然后,你可以使用 Vaux 将函数结果渲染成一个静态 html 文件,如下所示

let vaux = Vaux()
vaux.outputLocation = .file(name: "testing", path: "/tmp/")
do {
  try vaux.render(html)
} catch let error {
  print("Uh-oh, something happened: \(error.localizedDescription)")
}

最终结果是,你在你的 /tmp/ 目录下拥有一个名为 testing.html 的文件。

创建 HTML 元素

注意: 要查看 Vaux 的一系列实际用例,请查看 VauxTests.swift 以查看不同标签的示例。

编写一个返回 HTML 的函数,并在该函数内部添加你的构建器

func buildPage() -> HTML {

}

文档

即将推出...

导入这个库

Vaux 在 GitHub 上以 Swift 包的形式提供。 如果你正在使用 Xcode 11 beta,你可以简单地添加这个 url (https://github.com/dokun1/Vaux) 作为依赖项。 否则,你必须将其作为依赖项包含在你的 Package.swift 文件中,并使用命令行来为它创建一个项目。