#webasm #front-end #web-apps #web-framework #web-frontend #web #javascript

plaster

一个用于创建客户端单页应用的 wasm-bindgen 框架

15个版本

使用旧Rust 2015

0.2.5 2019年7月13日
0.2.4 2019年6月28日
0.2.2 2019年5月23日
0.2.0 2019年4月13日
0.1.7 2019年2月21日

#11 in #webasm

Download history 29/week @ 2024-04-01 6/week @ 2024-04-22 2/week @ 2024-05-13 5/week @ 2024-05-20 5/week @ 2024-05-27 2/week @ 2024-06-03 8/week @ 2024-06-10 3/week @ 2024-06-24 58/week @ 2024-07-01 4/week @ 2024-07-15

65 个月下载量
用于 3 crates

MIT/Apache

130KB
2.5K SLoC

plaster

plaster 是一个现代的 Rust 框架,用于使用 WebAssembly 创建前端应用程序。

它最初是从 yew 分支出来的。

为什么要分支?

yew 是一个优秀的框架,我在我的项目中找到了很多很好的用途。然而,它是建立在 stdweb 之上的,这也是一个很棒的框架,但是 wasm-bindgen 以及相关的 crate,如 web_sys,几乎是 WebAssembly 中低级访问 Web/JS API 的“圣洁”库。它们被设计为尽可能地与 WebAssembly 中直接从 WebIDL 定义生成的最终宿主级别绑定相匹配,从而使维护变得更加容易,并减少了访问新 API 的时间,因为它们变得标准化和可用。

此外,yew 对并发和并行性采取了有意见的立场,使用其 actor 模型。我并不是特别喜欢 actor,我更愿意只使用 Futures 和构建在该原语之上的库,所以我希望框架能够更容易地支持这个更自然的模型。 wasm-bindgen-futures 使得这非常容易实现,因为浏览器内置了对 Promise 的支持。

简而言之

  • yew 是建立在 stdweb 之上的,我想使用 wasm-bindgenweb_sys
  • yew 实现了一个基于 actor 的并发模型,我想使用 Futures 和 Promises。
  • yew 实现了 Services 来尝试提供一些常用的 JS/Web 模式的 Rust 高级原语。我认为这超出了库的范畴,并希望通过删除这个概念来简化它,并使基于 Promise 的 Futures 和组件更新的交互变得容易。
  • yew 使用一个自定义宏来实现 JSX 类似的语法。我想探索可能将其他人在努力实现的“通用”宏整合进来。 (这并不是分支的原因,更多的是对未来的一个备注)

依赖项

~6.5–9MB
~172K SLoC