83 个版本 (4 个破坏性更改)

0.5.26 2021年1月15日
0.5.15 2020年8月11日
0.5.12 2020年7月31日

#4#web-components

Download history 9/week @ 2024-03-11 3/week @ 2024-03-18 17/week @ 2024-04-01

每月下载量 185
6 个 crate 中使用(5 个直接使用)

MIT/Apache

740KB
344

包含 (WOFF 字体,99KB) fontawesome-webfont.woff,(WOFF 字体,78KB) fontawesome-webfont.woff2

Rusty 领域可扩展语言

Crates.IO Documentation Build Nightly Build Donate using Liberapay

为 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 许可证双许可,不附加任何额外条款或条件。

依赖项