10 个稳定版本
1.3.0 | 2024 年 1 月 28 日 |
---|---|
1.2.2 | 2021 年 10 月 25 日 |
#944 在 WebAssembly
在 aframe 中使用
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 个其他工具
- 一个针对
&str
的Htmlify
实现。这是一个特殊情况,当调用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