9次发布
0.1.0 | 2021年6月1日 |
---|---|
0.0.8 | 2021年6月1日 |
0.0.7 | 2021年4月25日 |
0.0.5 | 2021年1月30日 |
0.0.1 | 2020年10月2日 |
#1413 在 数据结构
29 每月下载量
在 4 crates 中使用
140KB
2K SLoC
木质素
一个轻量但功能丰富的虚拟DOM库,主要用于Web使用。
no_std
和没有启用 "callbacks"
功能的依赖项。
安装
请使用 cargo-edit 以始终添加此库的最新版本
cargo add lignin && cargo add -D lignin --features callbacks
某些类型约束在启用 "callbacks"
功能时更为严格,因此请务必始终检查此方式!
在编写支持回调的渲染器时,请使用
cargo add lignin --features callbacks
以始终启用该功能。
功能
"callbacks"
启用DOM回调支持。默认禁用。需要 std
。
应用程序或组件可以针对回调API进行编写,而无需启用此功能,在这种情况下,这些代码路径可以在编译时删除。
示例
use lignin::{Node, Element, ElementCreationOptions};
// Please bring your own allocator where necessary.
let _ = &Node::HtmlElement {
element: &Element {
name: "DIV", // Use all-caps for more efficient DOM interactions.¹
creation_options: ElementCreationOptions::new(), // `const fn` builder and getter/setter patterns for extensible interfaces.
attributes: &[],
content: Node::Multi(&[
"Hello! ".into(), // Some convenience included.
Node::Comment {
comment: "--> Be mindful of HTML pitfalls. <!--", // Renderers must validate.
dom_binding: None,
}
]),
event_bindings: &[], // Strongly typed using `web-sys`.
},
dom_binding: None, // For JS interop.
}
.prefer_thread_safe(); // Thread-safety can be inferred from bindings!
¹ 参见 Element.tagName (MDN)。这避免了不区分大小写的比较。
实现合同
有一些生态系统兼容性规则没有由Rust的类型系统或 unsafe
关键字涵盖。请参阅 主模块文档 了解更多信息。
已有技术
- Dodrio,它没有完全满足我的要求,但总的来说启发了这种方法。
感谢
感谢 Dronaroid 为这个库找到了一个很好的名字,@platy 对批评,并推动我向更好的实现迈进,以及所有在Rust编程语言社区服务器discord中回答我在重写期间提出的问题的人。
许可
在以下两种许可中选择一种
- Apache许可证,版本2.0 (LICENSE-APACHE 或 http://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在本作品中的任何贡献,应双授权如上所述,不附加任何额外条款或条件。
行为准则
变更日志
版本控制
lignin
严格遵循语义版本2.0.0,有以下例外
- 次要版本在主版本更改时不会重置为0(除v1外)。
将其视为全局功能级别。 - 修订版本在主版本或次要版本更改时不会重置为0(除v0.1和v1外)。
将其视为全局修订级别。
这包括上面指定的Rust版本要求。
较早的Rust版本可能兼容,但这可能会随着次要或修订版本而变化。
受功能和修补程序影响的是版本可以通过CHANGELOG.md中的相应标题确定。
依赖项
~0–2MB
~40K SLoC