#dom #reactive #front-end #ui

mogwai-macros

用于构建 mogwai ViewBuilder 的声明式 RSX 宏

2 个版本

0.1.0 2023 年 1 月 6 日
0.1.0-alpha2022 年 12 月 31 日

162#dom


3 个 crate 中使用 (2 个直接使用)

MIT 许可协议

23KB
439

mogwai-macros

提供过程宏 builder!view!,允许使用 RSX 声明 mogwai 视图。

示例 - 这个 RSX

    view!(
        <footer class="info">
            <p>"Double click to edit a todo"</p>
            <p>
                "Written by "
                <a href="https://github.com/schell">"Schell Scivally"</a>
            </p>
            <p>
                "Part of "
                <a href="http://todomvc.com">"TodoMVC"</a>
            </p>
        </footer>
    ).run()

将大致生成以下 Rust 代码

    (mogwai::gizmo::dom::View::element("footer") as View<web_sys::HtmlElement>)
        .attribute("class", "info")
        .with(
            (mogwai::gizmo::dom::View::element("p") as View<web_sys::HtmlElement>)
                .with("Double click to edit a todo"),
        )
        .with(
            (mogwai::gizmo::dom::View::element("p") as View<web_sys::HtmlElement>)
                .with("Written by ")
                .with(
                    (mogwai::gizmo::dom::View::element("a")
                        as View<web_sys::HtmlElement>)
                        .attribute("href", "https://github.com/schell")
                        .with("Schell Scivally"),
                ),
        )
        .with(
            (mogwai::gizmo::dom::View::element("p") as View<web_sys::HtmlElement>)
                .with("Part of ")
                .with(
                    (mogwai::gizmo::dom::View::element("a")
                        as View<web_sys::HtmlElement>)
                        .attribute("href", "http://todomvc.com")
                        .with("TodoMVC"),
                ),
        )
        .run()

依赖项

~1.5MB
~36K SLoC