17 个版本 (4 个稳定版)

1.2.0 2024年6月5日
1.1.0 2024年5月27日
0.3.1 2024年5月12日
0.2.3 2024年5月5日
0.1.10 2024年5月3日

#2111 in 过程宏


3 个 crate 中使用 (通过 cercis)

MIT 许可证

21KB
522 代码行数(不含注释)

cercis-preview

针对 cercis 包的宏

cargo add cercis

仅与 cercis 包一起使用

使用示例

更多示例,请参阅 cercis

格式化

将数据格式化为字符串,如使用 format!()

所有数据都通过引用传递到模板

use cercis::prelude::*;

fn main() {
  let name = "Boris";
  
  let page = rsx!(h1 { "Hello {name}!" });

  // output: <h1>Hello Boris!</h1>
  println!("{}", page.render())
}

属性

属性以 tag: value 的形式写在标签内容之前

use cercis::prelude::*;

fn main() {
  let text_id = "paragraph";
  let text = "Lorem ipsum";

  let page = rsx!(div {
    class: "container",

    h1 { "Hello World!" }
    p {
      id: "{text_id}",
    
      "{text}"
    }
  });

  // output: <div class='container'><h1>Hello World!</h1><p id='paragraph'>Lorem ipsum</p></div>
  println!("{}", page.render())
}

如果需要分支

使用常规的 Rust if 语法,可以创建分支

use cercis::prelude::*;

fn main() {
  let num = 8;

  let page = rsx!(div {
    if num == 9 {
      span { "Num is 9" }
    }
    if num == 8 {
      span { "Num is 8" }
    }
  });

  // output: <div><span>Num is 8</span></div>
  println!("{}", page.render())
}

循环

使用常规的 Rust for in 语法可以创建循环

use cercis::prelude::*;

fn main() {
  let names = vec!["Boris", "Polina", "Igor"];

  let page = rsx!(ol {
    for name in names {
      li { "{name}" }
    }
  });

  // output: <ol><li>Boris</li><li>Polina</li><li>Igor</li></ol>
  println!("{}", page.render())
}

如果遇到任何问题,请 创建问题

依赖项

~260–700KB
~17K 额外代码行数