前端框架性能基准测试:krausest.github.io/js-framewor…
Yew
- 最成熟、应用最广泛
- 类似 JSX 的模板语法
- 类似 React(以前是类似 Elm 的结构组件,现在是类似 React 的函数组件)
- 更多样板文件,例如事件回调、需要将
.clone()
内容放入闭包等。 - 相对较好的性能(比如 Preact/Vue,比 React 更快)
- WASM 二进制大小中等
- 社区维护(即原创者已经丢失);它维护得很好,审稿人在查看 PR 等方面做得很好,但是(这里主观认为)没有看到太多推动它长期发展的愿景
Dioxus
- 相对较新,发展较快
- 明确地将自己模型/市场为类似 React
- 独特的模板语法(不是 JSX)
- 大量不安全的 rust
- 基于新的 block-DOM 方法,性能非常好(不如React/Yew VDOM 灵活,但性能更高)
- WASM 二进制文件较大
- 非常重视针对桌面/本机 UI
Leptos
- 相对较新,发展较快
- 基于 SolidJS/fine-grained reactivity,没有虚拟 DOM 开销
- 类似 JSX 的模板语法
- 完全安全的 Rust
- 性能非常好;不仅在渲染速度上,而且在内存使用和服务器渲染速度上都优于此处列出的其他产品
- WASM 二进制较小(比 Sycamore 稍大)
- 服务器渲染非常快,并高度重视/支持与服务器的集成,包括多种服务器渲染模式(如有序和无序 HTML 流)
Sycamore
- 比 Dioxus/Leptos 更成熟,发展相对缓慢
- 基于 SolidJS/fine-grained reactivity
- 独特的模板语法(不像 JSX)
- 大量不安全的 rust
- WASM 二进制大小较小
- 性能相当不错,比 Yew 快,比 Dioxus/Leptos 慢,但可能足以满足您的需求
- 主要福利:Perseus 元框架
所有其他 Rust 前端 Web 框架:还有许多其他值得注意的框架(Dominator、Sauron、Mogwai、Kobold 都是以非常不同的方式想到的项目),但是它们周围没有足够重要的社区/生态系统来推荐。
- Elm 架构:状态机驱动的模型/视图/更新系统。用 Rust 术语来说,你有一个保存当前应用程序状态的 State 类型,一个描述如何改变状态以响应消息的消息枚举/更新函数,以及一个描述给定状态的视图应该是什么的视图函数,包括可以调度消息的不同元素上的事件侦听器。通过将前一个视图与下一个视图进行比较来协调视图树,框架将这些更改应用到 DOM。(Rust: Iced, Sauron, old Yew)
- React:基于组件。在现代 React(Rust:参见 new Yew、Dioxus)中,您可以使用局部状态变量定义组件函数。当组件函数的状态变量之一发生更改时,它会重新运行。同样,这会生成一个新的视图树,该视图树与旧视图树对比不同。与 Elm 架构的区别在于,由描述整个应用程序的显式有限状态机驱动,而 React 状态是由较小的局部变量原语构建的。
- SolidJS(Rust:参见 Leptos、Sycamore)使用细粒度反应系统而不是这种视图树比较来更新 DOM。整个应用程序基本上是一个反应图;更改“信号”之一(反应状态的原子单元)会以最有效的方式通过该图/树传播更改,从而更新叶子上的小部件。