83 个版本 (4 个破坏性更改)
0.5.26 | 2021年1月15日 |
---|---|
0.5.15 | 2020年8月11日 |
0.5.12 | 2020年7月31日 |
#4 在 #web-components
每月下载量 185
在 6 个 crate 中使用(5 个直接使用)
740KB
344 行
包含 (WOFF 字体,99KB) fontawesome-webfont.woff,(WOFF 字体,78KB) fontawesome-webfont.woff2
Rusty 领域可扩展语言
为 Rust 生成 xhtml 的领域特定语言宏和组件系统。 (发音为 "Rad Axle")
Rdxl 以过程宏的形式实现,因此除了字符串操作之外没有运行时依赖。这意味着 rdxl 可以通过 WebAssembly 在服务器端或客户端使用。
let my_int = 3;
let my_str = "asdf";
let my_vec = vec![true, false, true, true];
println!("{}",xhtml!(<ul>
{{ for v in my_vec.iter() {{
<li>{{my_int}}, {{my_str}}, {{v}}</li>
}} }}
</ul>));
通过实现 Display 属性的自定义 XML 元素鼓励模块化模板。只要它也实现了 Display 特性,就可以将外部的 xhtml 片段或杂项内容内联插入。
xtype!(<!MyList my_string:String my_int:u64>
<!MyItem my_bool:bool/>
<!MyOtherItem my_char:char/>
</MyList>);
xrender!(MyList, <ul>
<li>{{ self.my_string }}</li>
<li>{{ self.my_int }}</li>
{{ for i in self.children.iter() {{
{{ if let MyListChildren::MyItem(my_item) = i {{
<li>MyItem: {{ my_item.my_bool }}</li>
}} else if let MyListChildren::MyOtherItem(my_other_item) = i {{
<li>MyOtherItem: {{ my_other_item.my_char }}</li>
}} }}
}} }}
</ul>);
像 JavaScript 这样的外部语法可以与 cooked 或 raw 字符串内联引用。
xrender!(BarGraph,
<script src="https://d3js.org/d3.v4.min.js"></script>
<script>
r#"var margin = {top: 20, right: 20, bottom: 30, left: 40},
width = 960 - margin.left - margin.right,
height = 500 - margin.top - margin.bottom;"#
...
</script>
);
贡献
除非你明确说明,否则你提交给 rdxl 的任何贡献,都应按照 MIT 和 Apache 2.0 许可证双许可,不附加任何额外条款或条件。