2 个不稳定版本
0.5.0 | 2024年7月21日 |
---|---|
0.4.0 | 2023年3月19日 |
#1110 在 WebAssembly
149 每月下载量
用于 maomi-dom-template
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