#wasm-framework #front-end #framework #signal #web #web-apps

mika

用于在 Rust 中构建 wasm 前端网络应用程序的框架

1 个不稳定版本

0.0.0 2019 年 5 月 30 日

#27 in #wasm-framework

自定义许可

56KB
1.5K SLoC

Mika

Mika 是一个用于前端 wasm 应用程序的实验性、有偏见的框架,基于 futures-signalswasm-bindgenMikaDominator 的启发。

与 Dominator 比较

Dominator Mika
状态 "它通常功能完整 [...]" - 引自其 README 实验性。还没有一行测试代码。它只是足够运行 TodoMVC 的部分版本(没有路由,没有持久存储)
基于 Stdweb (stdweb 现在也基于 wasm-bindgen) 直接使用 wasm-bindgen
更新和渲染的分离。 按设计,不是! 但可以轻松添加 是的,它 试图 帮助用户分离应用程序视图渲染器和应用程序状态更新器。尽管无法阻止用户将应用程序状态修改代码插入到渲染中,但至少,Mika 为用户提供了将此类代码从渲染器中提取出来的方法。
DOM 构建 html!("div", {.class("some-class"), [...chilren...]}) Div::new().class("some-class").child(...).child(...)

优缺点

最大的优点和最大的缺点都来自 futures-signals

优点

  • futures-signals 有助于触发响应应用程序中更改的正确代码部分。(与虚拟 DOM 方法相比,虚拟 DOM 方法必须遍历整个虚拟 DOM 来找到差异)

缺点

  • 你必须学习 futures-signals
  • 由于 futures-signals,你发现自己更频繁地与借用检查器作斗争。

构建和提供服务

  • 你必须 安装 Rust
  • rustup install nightly (futures-signals 使用 futures 0.3 构建,需要 nightly)
  • rustup target add wasm32-unknown-unknown --toolchain=nightly (因为我们为网页浏览器构建)
  • cargo install wasm-bindgen-cliMika 是在 wasm-bindgen 之上构建的)
  • cargo install simi-cliMika 类似于 Simi
  • git clone https://gitlab.com/limira-rs/mika.git
  • cdexamples/counter
  • simi serve (是的,是 simi serve,因为我们使用了 simi-cli

等待构建完成,然后在您的浏览器中访问 https://127.0.0.1:8000/

文档

尚未完成。

一些小贴士

  • Mutable<T>/MutableVec<T> 的实例中获取 signal/signal_vec,其中 T: Copy
  • Mutable<T>/MutableVec<T> 的实例中获取 signal_cloned/signal_vec_cloned,其中 T: Clone

元素的允许内容

Mika 试图 在将子元素添加到元素时帮助您处理限制。如果您发现它不允许有效的子元素或允许无效的子元素(或其他任何错误),请随时打开一个问题。Mika 无法帮助处理其他限制,例如后代元素(子元素在子元素中)、具有/不具有属性的子元素的有效/无效性、子元素的顺序等。

src/dom/mod.rs 中还有一些 TODO,欢迎贡献。

依赖项

~15MB
~280K SLoC