ElementaryHTMX:使用 Swift 构建超文本 Web 应用程序

符合人体工程学的 HTMX 扩展,用于 Elementary

import Elementary
import ElementaryHTMX

// first-class support for all HTMX attributes
form(.hx.post("/items"), .hx.target("#list"), .hx.swap(.outerHTML)) {
    input(.type(.text), .name("item"), .value("New Item"))
    input(.type(.submit), .value("Add Item"))
}

div {
    button(.hx.delete("items/\(item.id)")) { "" }
    item.text
}

MyFragment(items: items)
    .attributes(.hx.swapOOB(.outerHTML, "#list"))
import Elementary
import ElementaryHTMXSSE

// HTMX Server Send Events extension
div(.hx.ext(.sse), .sse.connect("/time"), .sse.swap("message")) {
    Date()
}
import Elementary
import ElementaryHTMXWS

// HTMX WebSockets extension
div(.hx.ext(.ws), .ws.connect("/echo")) {
    form(.ws.send) {
        input(.type(.text), .name("message"))
        button { "Send" }
    }
    div(.id("echo")) {}
}
import Elementary
import ElementaryHyperscript

// Hyperscript extension
button(.hyperscript("on click send hello to <form />")) {
    "Send"
}

试用一下

查看 Hummingbird 示例应用

查看 Vapor 示例应用

文档

该包为所有 HTMLElements 引入了 .hx 语法 - 为大多数 HTMX 属性 提供了丰富的 API。

还有一个 ElementaryHTMXSSE 模块,为 服务器发送事件扩展 添加了 .sse 语法,以及 ElementaryHTMXWS 模块,为 WebSockets 扩展 添加了 .ws 语法。

该包还支持 Hyperscript_ 属性,作为 .hyperscript

未来方向

欢迎提交 PR。