2 个不稳定版本

0.5.0 2024年7月21日
0.4.0 2023年3月19日

#1110WebAssembly

Download history 133/week @ 2024-07-20 16/week @ 2024-07-27

149 每月下载量
用于 maomi-dom-template

MIT 许可证

260KB
6.5K SLoC

maomi:用于构建组件页面的 Rust 框架

这是框架的 DOM 绑定 模块。

快速开始

页面由组件组成。

要构建页面,编写一个包含页面内容的组件。

use wasm_bindgen::prelude::*;
use maomi::prelude::*;
use maomi_dom::{prelude::*, element::*};

// declare a component
#[component(Backend = DomBackend)]
struct HelloWorld {
    // a component should have a template field
    template: template! {
        <div>
            // text in the template must be quoted
            "Hello world!"
        </div>
    },
}

// the component must implement `Component` trait
impl Component for HelloWorld {
    fn new() -> Self {
        Self {
            template: Default::default(),
        }
    }
}

#[wasm_bindgen(start)]
pub fn wasm_main() {
    // the `<body>` is used to contain component content
    let dom_backend = DomBackend::new_with_document_body().unwrap();
    let backend_context = maomi::BackendContext::new(dom_backend);

    // create a mount point
    let mount_point = backend_context
        .enter_sync(move |ctx| {
            ctx.attach(|_: &mut HelloWorld| {}).unwrap()
        })
        .map_err(|_| "Cannot init mount point")
        .unwrap();

    // leak the backend context, so that event callbacks still work
    std::mem::forget(mount_point);
    std::mem::forget(backend_context);
}

依赖项

~11MB
~207K SLoC