#html #kdl #dialect #text #variables #text-node

nightly htmeta

HTML 的 KDL 方言

1 个不稳定版本

0.1.0 2024 年 8 月 10 日

#6#dialect

Download history 87/week @ 2024-08-05 26/week @ 2024-08-12

113 每月下载量

MIT 许可证

9KB
125 行代码(不包括注释)

这个crate实现了一种(简单的)名为 KDL 的风味,称为 htmeta。这个方言的目的是允许直接表示 HTML

格式

由于 KDL 在语义上已经非常类似于 HTML,因此 htmeta 只增加了两件事

  • 一种区分要显示在 HTML 中的真实 text 内容的方法。
  • 变量以减少重复。

文本节点

文本节点命名为 text,并且它们只能有一个位置参数,即要直接粘贴到结果 HTML 中的文本。

示例

html {
    body {
        h1 {
            text "Title"
        }
    }
}

结果为

<html>
    <body>
        <h1>
            Title
        </h1>
    </body>
</html>

变量

如果你曾经使用过像 TailwindCSSBootstrap 这样的基于 CSS 的框架,你就会知道反复输入相同的类是多么的繁琐。因此,htmeta 实现了一个简单的变量机制,以减少重复。

示例

html {
    head {
        meta charset="utf-8"
        // Includes tailwindcss
        script src="https://cdn.tailwindcss.com"
    }
    body {
        // creates a variable called `$btn_class`
        $btn_class "border-1 rounded-lg"

        // Value of `$btn_class` is reused inside these buttons:
        button class="$btn_class ml-4"
        bttton class="$btn_class mr-4"
    }
}

结果为

<html>
    <head>
        <meta charset="utf-8"/>
        <script src="https://cdn.tailwindcss.com"></script>
    </head>
    <body>
        <button class="border-1 rounded-lg ml-4"></button>
        <bttton class="border-1 rounded-lg mr-4"></bttton>
    </body>
</html>

依赖

~4–6MB
~106K SLoC