Web框架基准测试环境
-
MacBook Pro 14(32 GB RAM、8/14 核、OSX 14.3.1)
-
Chrome 123.0.6312.59(arm64)
-
solid.js:前端Web框架,语法类似于React,内核类似Vue
- 没有虚拟DOM
-
dioxus:前端全栈跨平台框架,Rust+WebAssembly,类似于Nextjs
- 有虚拟DOM,但很少与真实DOM比较差异
- 所有平台都以Web渲染,WebView
-
leptos:类似于 SolidJS
- 没有虚拟DOM
-
vue.js:尤大出品,看这篇的都认识
- 有虚拟DOM
-
angular.ts:前端Web框架,Google开发,开箱即用,Ts友好,国外用的多
- 有虚拟DOM
-
react.js:Facebook开发,看这篇的都认识
- 有虚拟DOM
-
yew:前端Web框架,Rust+WebAssembly,专注于SPA
- 有虚拟DOM
测试结果
绿色表示明显更快,红色表示明显更慢
从前往后为加权综合评分排序
solid完胜
| 项目 | 速度最快 |
|---|---|
| 创建行 | solid |
| 替换所有行 | dioxus |
| 部分更新 | dioxus |
| 选择行 | solid |
| 交换行 | leptos |
| 删除行 | leptos |
| 创建多行 | solid |
| 将行附加到大表 | solid |
| 清除行 | solid |
Rust一定比Js快?
- 从有虚拟DOM比较,Rust+WebAssembly框架dioxus比vue、angular、react都快
- 从没有虚拟DOM比较,solidjs比Rust+WebAssembly框架leptos更快
没有虚拟DOM就一定更快?
- 从Js框架的角度看,确实是没有DOM的solid更快
- 从Rust框架角度看,没有虚拟DOM的leptos,在部分更新和加权综合评分时有虚拟DOM的dioxus更快
以上两个问题都说明框架设计比语言更重要,当然,这些差距都是毫秒级的,该用啥用啥