#rsx #tags #text #attr #bloom #component #syntax

bloom-rsx

bloom的类似JSX的语法

2个版本

0.1.1 2024年7月15日
0.1.0 2024年7月15日

370过程宏

Download history 170/week @ 2024-07-11 32/week @ 2024-07-18 5/week @ 2024-07-25 2/week @ 2024-08-01

209 每月下载量

MIT 许可证

11KB
224

bloom-rsx

基本上,bloom-rsx以这种方式实现rsx,即它只是调用基于builder-pattern crate的构建模式。

标签

小写标签将被转换成对必须在作用域内的tag函数的调用(bloom-html为HtmlNode提供了一个)

rsx!(<div id="foo" on_click=|| {} />)

将转换成(相当于)

tag("div")
    .attr("id", "foo")
    .on("click", || {})
    .build()
    .into()

子元素

子元素在构建标签本身之后传递

rsx!(<div><span /></div>)

被转换成

tag("div")
  .build()
  .children(vec![
    tag("span").build().into()
  ])

文本

文本将被转换为目标节点类型,使用into

rsx!(<div>"foobar"</div>)

变为

tag("div")
  .build()
  .children(vec![
    "foobar".into()
  ])

组件

大写标签被转换成构建模式

rsx!(<MyComponent foo="bar"><div /></MyComponent>)

变为

MyComponent::new()
  .foo("bar")
  .children(vec![
    tag("div").build().into()
  ])
  .build()
  .into()

依赖关系

~1.5MB
~36K SLoC