在最新的web框架基准测试中
- https://www.techempower.com/benchmarks
- https://web-frameworks-benchmark.netlify.app/result?l=rust
除去一些没有发布分支或者已经很少维护或者不是rust写的框架外,可以看到Axum
、Actix-web
是目前性能最好的两款后端框架,不一定性能好就用,适合自己的才最重要!
由于部分Web框架并不是纯粹的后端框架,而是像Nextjs
既可以写前端也可以前后端一起写的Web框架,还有像Reactjs
这种纯粹的前端框架,这里做出两种分类:后端框架、前端/全栈框架;由于发布版本不代表功能齐全,所有框架附上当前的Star数量(2024/8/26)
后端框架
1、 Axum ★18k:Tokio团队开源,Axum目前旨在与Tokio运行时、Tower模块化、Hyper HTTP传输层配合使用
- 将请求路由到具有无宏API的处理程序
- 使用提取器声明性地解析请求
- 简单且可预测的错误处理模型
- 用最少的代码生成响应
- 充分利用由中间件、服务和实用程序组成的tower和tower-http生态系统
- 支持 WebSocket
- 100%安全Rust实现
2、Actix-Web ★21.1k:建立在Tokio上的轻量框架
- 具有可选宏的请求路由
- 支持HTTP/1和HTTP/2
- 支持流式传输和管道传输
- 支持WebSockets
- 支持SSL:Open SSL或Rustls
- 集成Logger、Session、CORS等中间件
3、Rocket ★24.1:简洁的写法
- 大量宏
- 支持模板引擎和数据库集成等功能
- 支持WebSockets
4、Warp ★9.4k:建立在Hyper上的Web框架,基于Futures和Tokio,核心是Filter过滤请求
- 支持Gzip、Deflate、Brotli压缩
- 支持HTTP/1.x和HTTP/2
- 支持WebSockets
5、Tide ★5k:基于async/await的Web框架
- 注重可扩展性和灵活性
6、Salvo ★3.1k:使用Hyper、Tokio构建的Web后端框架,Go风格
- 内置OpenAPI、HTTP/1.x、HTTP/2、HTTP/3
- 统一的中间件和处理接口
- 支持Acme,自动从let’s encrypt获取TLS证书
- 支持Tower服务和Layer
前端/全栈框架
- Trunk:构建打包WebAssemnly的工具,可以将编写的代码打包为
Html、CSS、Js
,并将Wasm
与Js
绑定,相当于Webpack
、Rollup
、Rspack
、Turbopack
、Rolldown
(总有一个你认识的,后三个都是rust编写的) - SEO:搜索引擎优化,让您的网站更有可能出现在搜索引擎结果中的做法,搜索引擎使用网络爬虫来索引网站内容,这些爬虫大多数都无法运行 JavaScript,因此如果您的页面在客户端呈现,它们将无法索引页面内容
1、Tauri ★81.2k:跨平台全栈框架,以HTML、CSS 和 JavaScript的方式构建应用
- 支持macOS、Windows、Linux、iOS、Android
- 使用WRY与各平台WebView交互
- 支持Rust、Js、Ts作为后端语言
- 支持结合到Vue、React、Next、Yew、等Web框架中,也可以直接创建对应Web框架的应用
2、Yew ★30.4k:支持WebAssemnly的响应式web前端框架,类似 React 的函数组件
- 使用虚拟 DOM
- 使用wasm-bindgen
- 写法类似于TSX,逻辑和UI写在一起
- 专门设计SPA
- 支持SSR(实验阶段)
- 社区维护,社区案例多
3、Dioxus ★20k:支持WebAssemnly的响应式跨平台全栈框架,Dioxus 深受 React 的启发,适合那些需要频繁与服务器通信(如实时协作应用程序)但不需要与那么多客户端/浏览器 API 通信的应用
- 支持macOS、Windows、Linux、iOS、Android,桌面、移动、Web应用
- 使用虚拟 DOM,但不diffing真实 DOM 直接渲染UI
- 支持热重载
- 支持WebView、WebGPU、Skia
- 支持SSR、SEO
- 使用Liveview渲染,数据通过WebSocket发送,SEO不友好
- 使用全栈渲染,SEO友好
- 支持SSG
- 与Axum集成
- 大量unsafe rust
- 结合了 React、Solid 和 Svelte 的优点,使用RSX
4、leptos ★15.7k:支持WebAssemnly的响应式全栈web框架
- 不依赖于虚拟 DOM,对真实 DOM 进行细粒度的更新
- 完美集成Tailwind
- 热加载模板更新
- 支持SSR、SEO友好
- 声明式UI
5、Sycamore ★2.8k:支持WebAssemnly的响应式web前端框架,和Solid
很相似
- 不依赖于虚拟 DOM ,对真实 DOM 进行细粒度的更新
- 不需要Js
- 支持SPA
- 支持SSR、SEO友好
- 大量unsafe rust
6、Perseus ★2.1k:基于Sycamore全栈框架
- 支持SSG
- 支持SSR、SEO友好
- 支持增量更新、按需构建
- 支持热重载
- 使用Fluent提供i18n国际化
7、MoonZoon ★1.8k:支持WebAssemnly的全栈Web框架,作者的理念:“我们不想因为数百万不必要的技术决策而浪费时间和金钱。” 啥都不需要?你需要Rust!
- 不需要 Javascript
- 不需要 CSS
- 不需要 REST
- 不需要 SQL
- 不需要HTML
- 支持SSR、SEO友好
- 提供鉴权
总结
如果追求性能、教程案例、解决方案数量
后端:想用多用宏就用Actix-web
,不想用宏就用Axum
,个人更看好Axum
前端:只写前端页面选Yew
;全栈应用选Dioxus
;跨平台选Tauri