10 个稳定版本

1.3.0 2024 年 1 月 28 日
1.2.2 2021 年 10 月 25 日

#944WebAssembly


aframe 中使用

MIT/Apache

10KB
144

用于将 Rust 结构体生成 HTML 的特质

包含以下可选定义

// Defaults to an empty string
fn tag(&self) -> Cow<'static, str> { /* ... */ }
// Defaults to empty vec
fn attributes(&self) -> Vec<Attribute> { /* ... */ }
// Defaults to empty vec
fn inner_html(&self) -> Vec<Box<dyn Htmlify>> { /* ... */ }

以下方法不需要实现

// Calls `as_raw_html` for each of the items returned by `inner_html`
fn inner_html_as_string(&self) -> String { /* ... */ }

以下定义也不需要实现,但在某些情况下可能需要重写

fn as_raw_html(&self) -> String 
{
    format!
    (
        "<{0} {2}> {1} </{0}>",
        self.tag(),
        self.inner_html_as_string(),
        self.attributes()
            .iter()
            .map(Attribute::to_string)
            .collect::<Vec<String>>()
            .join(" ")
    )
}

可以通过启用 web-sys 功能来允许访问以下默认功能

fn as_element(&self) -> Option<web_sys::Element> { /* ... */ }

可以通过启用 yew 功能来允许访问以下默认功能

fn as_yew_node(&self) -> Html { /* ... */ }

此 crate 包含 3 个其他工具

  • 一个针对 &strHtmlify 实现。这是一个特殊情况,当调用 as_raw_html 时简单地返回字符串本身,当调用 as_element 时返回 None。这样就可以表示文本内容 "留白"(并且 as_element 的默认实现理解这一点)。
  • 一个 Attribute 结构,用于将键值对作为字符串存储,专门用于元素属性。这些使用 Cow<'static, str> 将优化细节留给实现者。
  • web-sys 功能还提供对 append_to_document_body 函数的访问,该函数接受任何 impl Htmlify 并尝试将其附加到文档体(通过 web_sys 调用)。这纯粹是为了方便。

依赖项

~0–3.5MB
~67K SLoC