讨论一下 Wails、Tauri、Flutter、Electron 这几种热门的桌面客户端技术栈

2026-04-11 10:531阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

宣传主张

  • Wails: 体积小、启动快、学习曲线平滑、上手难度低
  • Tauri: 体积极小、分发便捷、安全性高
  • Flutter: 引擎强大、生态丰富、上限极高
  • Electron: 内嵌引擎、依赖隔离、通用可靠

各自叙事

Wails & Tauri 轻量派 / 系统原生

Wails(v2) 和 Tauri 都采用系统自带的浏览器引擎, 因此天然拥有打包体积小的亮点, 安装包通常在 10MB 以内, 对比 Electron 动辄 100MB+ 的体量, 差距明显

同时得益于 Golang 和 Rust 本身的性能优势, 两者的启动速度均能做到毫秒级

主要差异在于:

  • Wails 更加容易上手。Go 的语法简洁、并发模型直观,前端开发者可以在几小时内跑通第一个 demo
  • Tauri 的整体分发构建体系更加完善, Rust 后端提供了更强的类型安全和内存安全保障,v2 版本引入了更完善的插件系统、移动端支持(iOS、Android),以及更细粒度的权限控制机制

Wails v3 带来了架构层面的重大变化: 从声明式 API 转向更灵活的过程式、支持多窗口管理、引入了更透明的构建系统、引入了内嵌引擎Blink, 不过 v3 目前仍处于 alpha,生产环境建议继续使用 v2(这玩意v3 a了很久很久了, 还是遥遥无期

Flutter 自成一派

Flutter 主打自有的渲染引擎, 不依赖系统 WebView, 这意味着它在所有平台上拥有完全一致的渲染表现

上限极高, 能实现游戏级别的复杂动画和图形渲染, 轻松达到 60 FPS 甚至 120 FPS+

同时 Flutter 的插件生态丰富, 可以快速实现桌面端和移动端之间的迁移, 同一套 Dart 代码库覆盖 Android、iOS、macOS、Windows、Linux 和 Web 六大平台

对于需要全平台覆盖的产品来说, Flutter 的 WORA 叙事非常有吸引力, 前提是你用的惯 Dart

Electron 不依赖环境

Electron 在其官网直接说明了核心优势: 内嵌 Chromium 和 Node.js, 目标是提供可靠、安全、稳定且成熟的体验, 主张是不依赖用户的运行环境

这个定位看似保守, 但在商业场景中却极其重要! (Electron 是工作 Wails 是生活

你不需要担心用户的系统版本、WebView 版本、字体渲染差异

VS Code、Slack、Discord、Figma 等头部产品都选择了 Electron

辩论的看点

商业角度

一致性是生命线

Wails(v2) 和 Tauri 最大的痛点,恰恰正是它们最大的亮点——使用了系统内置的 WebView 引擎

不同电脑的系统、WebView 版本、渲染规则都有可能存在差异, 有概率导致 UI 错位、样式错乱、字体变形、交互异常

系统 内核 差异点
Windows Edge WebView2 不同 Win7/8/10/11 版本, WebView2 Runtime 版本可能差异巨大, 部分旧系统甚至未预装
macOS Safari WebKit 新老 macOS 对 CSS/JS 特性支持差异极大, Safari 一向以慢半拍著称
Linux WebKitGTK 兼容性最差, 样式最容易乱, 且不同发行版的 WebKitGTK 版本参差不齐

再叠加系统缩放、系统字体、系统主题、DPI 差异…

如果一定要用 Wails(v2) 或 Tauri,解决方案是有的

  • 在 Windows 上强制使用(安装) WebView2 Runtime, 禁止使用旧版 Trident/EdgeHTML 内核
  • 在 macOS、Linux 上禁用系统原生样式注入

那 Flutter 呢?

Flutter 因为自带渲染引擎, 天然不存在 WebView 一致性问题, 但 Flutter 最大的问题是性价比, 大部分团队的技术栈都不覆盖 Dart/Flutter

Electron 从商业应用来看是当之无愧的真神

体验角度

小而美 vs 大而全

Wails、Tauri 和 Flutter 都能受益于本身 Golang、Rust 和 Dart 生态来实现一些 Electron 难以做到的事情

例如你能直接将 Ollama 嵌入到你的 Wails AI 应用中,假装自己自研了一个新的运行时 省去小白用户还要手动安装 Ollama 的问题

Tauri 也是同理, Rust 生态中的高性能库可以直接编译进二进制, 无需额外运行时依赖

这种小而美的体验在安装环节就能给用户留下好印象

  • 10MB 的安装包 vs 150MB 的安装包(且不提分发效率)
  • 0.5s 的启动速度 vs 2-3s 的启动速度
  • 30MB 的内存占用 vs 150-300MB 的内存占用

而在开发体验方面

  • Wails 和 Electron 因为技术栈的亲和性, 使得开发者上手门槛低学习曲线平滑, 尤其是 Electron 几乎零门槛
  • Tauri 本体开发体验不错, 但 Rust 的学习曲线是实打实的高, 所有权、生命周期、借用检查…
  • Flutter 的开发体验和原生安卓非常类似, 熟悉的开发者上手会很快, 但桌面端仍有提升空间(热重载不稳定、部分桌面 API 缺失

生态角度

成熟度几乎等同成本

维度 Electron Tauri Wails Flutter
社区规模 ★★★★★ ★★★★ ★★★ ★★★★
生产案例 VS Code、Codex 极少数 极少数 Google Ads、BMW
包管理 ★★★★★ ★★★ ★★ ★★★★
文档完善度 ★★★★★ ★★★★ ★★★ ★★★★
桌面端成熟度 ★★★★★ ★★★ ★★★ ★★★
移动端支持 x x
跨平台一致性 ★★★★★ ★★★ ★★★ ★★★★★

Electron 的 npm 生态和社区积累是其他框架短期内无法追赶的, 当你需要某个功能时, 大概率已经有一个 npm 包可以直接用

而 Tauri 和 Wails 的生态仍在快速成长中(很多场景需要自己造轮子


综上, 你的最常用的是哪个?

我是用的 Wails, 咳咳前文可以看到确实有些主观偏向 主要是 Rust 太难用了

如有疏漏欢迎指出~

网友解答:
--【壹】--:

很好的一篇文章。我本身是一个python后端开发。。。。。python的桌面应用真是一眼难进,而且我还是mac开发机,家里人用win运行。python还不能跨平台打包。。。
最近在帮家里人写个桌面端小软件,这几个调研了一圈,最后还是决定用wails,直接给整个压缩包打包了webview文件进去 本身有一定的go基础,能在开发中学习(虽然现在基本都是vibe coding)了。
佬的这篇文章介绍的很详细,后续有需求可以方便考虑技术栈了。


--【贰】--: Kkk Lls:

公司的项目最好还是Electron

Electron真的很恶心,每人一个内核

我假期没事干开发软件,功能都比较简单,swiftui做出来只有1兆,而electron默认有近300兆,实在是太变态了


--【叁】--:

JetBrains家的KMP也是支持桌面和移动端,不知道咋样


--【肆】--:

Wails和Tauri是一类东西,都是一门语言后端+webview
Ft是自己的渲染引擎
el是最成熟和古老的,最吃资源


--【伍】--: ArkaneFans:

桌面端的话

不考虑其他的,我觉得avalonia更好一点,就是用得人少,表现力还是不错的,就是AI可能写不明白


--【陆】--:

长久用肯定Flutter最好,社区也活跃,不过公司小项目我一般都是用Electron,毕竟方便快捷,除非公司给你时间去搭建和优化


--【柒】--:

只讨论桌面端的话Electron就是唯一真神,flutter桌面端的多窗口虽然合并了,但还不是正式版


--【捌】--:

依我看swift跨平台5-10年都发展不出来

最多做个逻辑兼容层


--【玖】--:

可能 Tauri 的缺陷还是在于 rust 生态?
我之前使用 rust 编写 web 后端时,发现很多包都是处于 0.x.x 版本,都未正式发版


--【拾】--:

主要针对开发,自己用的话肯定还是想要原生性能


--【拾壹】--:

你说对了,Rust这边不知道怎么搞的就是不爱发正式版,一升级能炸一堆


--【拾贰】--:

我觉得一个都不能打,还是在探索比较无痛的GUI跨平台方案

Web的问题就是消耗太大了,无论走不走webview内存占用多逃不了


--【拾叁】--:

感觉最有竞争力还是Flutter,弄完electron之后打算弄弄看


--【拾肆】--:

flutter我觉得最好,当时还学了几天,可惜项目没有下来。electron基本懂前端的就是有手就行,但是缺点就是体积大,还有就是底层通信麻烦,前几年一个项目里面需要操作更底层的api,又不会c++,然后node-ffi又和新版本完全不匹配,挺麻烦的,不过现在有AI了,这个问题不大。
tauri我最近一直在用ai给我写项目,编译开发阶段过程体积大,打包后小,也不懂rust,谈不上感觉,后面我做好了,发个帖子,让佬用用看


--【拾伍】--:

感谢科普 对桌面端框架了解的不多 之前只用vibe coding 弄了tauri的桌面端 只看见容量小 没有意识到其弱点


--【拾陆】--:

前几天swift好像出了个对接安卓的sdk,也算跨平台开发了?


--【拾柒】--:

感觉移动端就flutter最好,桌面端自己的项目可以尝试tauri,公司的项目最好还是Electron


--【拾捌】--:

我选择Electron。最近开源的一个旮旯管理器也是纯vibe出来的Electron桌面应用。主要就是JS生态对于vibe实在是太友好了。什么?你说性能?能跑不就行了


--【拾玖】--:

比较喜欢tauri,wails也挺不错的,就是社区热度有点低,憋那么久才憋出来正式的2.0,最讨厌的是electron​ 最近electrobun发展也挺快的

标签:软件开发
问题描述:

宣传主张

  • Wails: 体积小、启动快、学习曲线平滑、上手难度低
  • Tauri: 体积极小、分发便捷、安全性高
  • Flutter: 引擎强大、生态丰富、上限极高
  • Electron: 内嵌引擎、依赖隔离、通用可靠

各自叙事

Wails & Tauri 轻量派 / 系统原生

Wails(v2) 和 Tauri 都采用系统自带的浏览器引擎, 因此天然拥有打包体积小的亮点, 安装包通常在 10MB 以内, 对比 Electron 动辄 100MB+ 的体量, 差距明显

同时得益于 Golang 和 Rust 本身的性能优势, 两者的启动速度均能做到毫秒级

主要差异在于:

  • Wails 更加容易上手。Go 的语法简洁、并发模型直观,前端开发者可以在几小时内跑通第一个 demo
  • Tauri 的整体分发构建体系更加完善, Rust 后端提供了更强的类型安全和内存安全保障,v2 版本引入了更完善的插件系统、移动端支持(iOS、Android),以及更细粒度的权限控制机制

Wails v3 带来了架构层面的重大变化: 从声明式 API 转向更灵活的过程式、支持多窗口管理、引入了更透明的构建系统、引入了内嵌引擎Blink, 不过 v3 目前仍处于 alpha,生产环境建议继续使用 v2(这玩意v3 a了很久很久了, 还是遥遥无期

Flutter 自成一派

Flutter 主打自有的渲染引擎, 不依赖系统 WebView, 这意味着它在所有平台上拥有完全一致的渲染表现

上限极高, 能实现游戏级别的复杂动画和图形渲染, 轻松达到 60 FPS 甚至 120 FPS+

同时 Flutter 的插件生态丰富, 可以快速实现桌面端和移动端之间的迁移, 同一套 Dart 代码库覆盖 Android、iOS、macOS、Windows、Linux 和 Web 六大平台

对于需要全平台覆盖的产品来说, Flutter 的 WORA 叙事非常有吸引力, 前提是你用的惯 Dart

Electron 不依赖环境

Electron 在其官网直接说明了核心优势: 内嵌 Chromium 和 Node.js, 目标是提供可靠、安全、稳定且成熟的体验, 主张是不依赖用户的运行环境

这个定位看似保守, 但在商业场景中却极其重要! (Electron 是工作 Wails 是生活

你不需要担心用户的系统版本、WebView 版本、字体渲染差异

VS Code、Slack、Discord、Figma 等头部产品都选择了 Electron

辩论的看点

商业角度

一致性是生命线

Wails(v2) 和 Tauri 最大的痛点,恰恰正是它们最大的亮点——使用了系统内置的 WebView 引擎

不同电脑的系统、WebView 版本、渲染规则都有可能存在差异, 有概率导致 UI 错位、样式错乱、字体变形、交互异常

系统 内核 差异点
Windows Edge WebView2 不同 Win7/8/10/11 版本, WebView2 Runtime 版本可能差异巨大, 部分旧系统甚至未预装
macOS Safari WebKit 新老 macOS 对 CSS/JS 特性支持差异极大, Safari 一向以慢半拍著称
Linux WebKitGTK 兼容性最差, 样式最容易乱, 且不同发行版的 WebKitGTK 版本参差不齐

再叠加系统缩放、系统字体、系统主题、DPI 差异…

如果一定要用 Wails(v2) 或 Tauri,解决方案是有的

  • 在 Windows 上强制使用(安装) WebView2 Runtime, 禁止使用旧版 Trident/EdgeHTML 内核
  • 在 macOS、Linux 上禁用系统原生样式注入

那 Flutter 呢?

Flutter 因为自带渲染引擎, 天然不存在 WebView 一致性问题, 但 Flutter 最大的问题是性价比, 大部分团队的技术栈都不覆盖 Dart/Flutter

Electron 从商业应用来看是当之无愧的真神

体验角度

小而美 vs 大而全

Wails、Tauri 和 Flutter 都能受益于本身 Golang、Rust 和 Dart 生态来实现一些 Electron 难以做到的事情

例如你能直接将 Ollama 嵌入到你的 Wails AI 应用中,假装自己自研了一个新的运行时 省去小白用户还要手动安装 Ollama 的问题

Tauri 也是同理, Rust 生态中的高性能库可以直接编译进二进制, 无需额外运行时依赖

这种小而美的体验在安装环节就能给用户留下好印象

  • 10MB 的安装包 vs 150MB 的安装包(且不提分发效率)
  • 0.5s 的启动速度 vs 2-3s 的启动速度
  • 30MB 的内存占用 vs 150-300MB 的内存占用

而在开发体验方面

  • Wails 和 Electron 因为技术栈的亲和性, 使得开发者上手门槛低学习曲线平滑, 尤其是 Electron 几乎零门槛
  • Tauri 本体开发体验不错, 但 Rust 的学习曲线是实打实的高, 所有权、生命周期、借用检查…
  • Flutter 的开发体验和原生安卓非常类似, 熟悉的开发者上手会很快, 但桌面端仍有提升空间(热重载不稳定、部分桌面 API 缺失

生态角度

成熟度几乎等同成本

维度 Electron Tauri Wails Flutter
社区规模 ★★★★★ ★★★★ ★★★ ★★★★
生产案例 VS Code、Codex 极少数 极少数 Google Ads、BMW
包管理 ★★★★★ ★★★ ★★ ★★★★
文档完善度 ★★★★★ ★★★★ ★★★ ★★★★
桌面端成熟度 ★★★★★ ★★★ ★★★ ★★★
移动端支持 x x
跨平台一致性 ★★★★★ ★★★ ★★★ ★★★★★

Electron 的 npm 生态和社区积累是其他框架短期内无法追赶的, 当你需要某个功能时, 大概率已经有一个 npm 包可以直接用

而 Tauri 和 Wails 的生态仍在快速成长中(很多场景需要自己造轮子


综上, 你的最常用的是哪个?

我是用的 Wails, 咳咳前文可以看到确实有些主观偏向 主要是 Rust 太难用了

如有疏漏欢迎指出~

网友解答:
--【壹】--:

很好的一篇文章。我本身是一个python后端开发。。。。。python的桌面应用真是一眼难进,而且我还是mac开发机,家里人用win运行。python还不能跨平台打包。。。
最近在帮家里人写个桌面端小软件,这几个调研了一圈,最后还是决定用wails,直接给整个压缩包打包了webview文件进去 本身有一定的go基础,能在开发中学习(虽然现在基本都是vibe coding)了。
佬的这篇文章介绍的很详细,后续有需求可以方便考虑技术栈了。


--【贰】--: Kkk Lls:

公司的项目最好还是Electron

Electron真的很恶心,每人一个内核

我假期没事干开发软件,功能都比较简单,swiftui做出来只有1兆,而electron默认有近300兆,实在是太变态了


--【叁】--:

JetBrains家的KMP也是支持桌面和移动端,不知道咋样


--【肆】--:

Wails和Tauri是一类东西,都是一门语言后端+webview
Ft是自己的渲染引擎
el是最成熟和古老的,最吃资源


--【伍】--: ArkaneFans:

桌面端的话

不考虑其他的,我觉得avalonia更好一点,就是用得人少,表现力还是不错的,就是AI可能写不明白


--【陆】--:

长久用肯定Flutter最好,社区也活跃,不过公司小项目我一般都是用Electron,毕竟方便快捷,除非公司给你时间去搭建和优化


--【柒】--:

只讨论桌面端的话Electron就是唯一真神,flutter桌面端的多窗口虽然合并了,但还不是正式版


--【捌】--:

依我看swift跨平台5-10年都发展不出来

最多做个逻辑兼容层


--【玖】--:

可能 Tauri 的缺陷还是在于 rust 生态?
我之前使用 rust 编写 web 后端时,发现很多包都是处于 0.x.x 版本,都未正式发版


--【拾】--:

主要针对开发,自己用的话肯定还是想要原生性能


--【拾壹】--:

你说对了,Rust这边不知道怎么搞的就是不爱发正式版,一升级能炸一堆


--【拾贰】--:

我觉得一个都不能打,还是在探索比较无痛的GUI跨平台方案

Web的问题就是消耗太大了,无论走不走webview内存占用多逃不了


--【拾叁】--:

感觉最有竞争力还是Flutter,弄完electron之后打算弄弄看


--【拾肆】--:

flutter我觉得最好,当时还学了几天,可惜项目没有下来。electron基本懂前端的就是有手就行,但是缺点就是体积大,还有就是底层通信麻烦,前几年一个项目里面需要操作更底层的api,又不会c++,然后node-ffi又和新版本完全不匹配,挺麻烦的,不过现在有AI了,这个问题不大。
tauri我最近一直在用ai给我写项目,编译开发阶段过程体积大,打包后小,也不懂rust,谈不上感觉,后面我做好了,发个帖子,让佬用用看


--【拾伍】--:

感谢科普 对桌面端框架了解的不多 之前只用vibe coding 弄了tauri的桌面端 只看见容量小 没有意识到其弱点


--【拾陆】--:

前几天swift好像出了个对接安卓的sdk,也算跨平台开发了?


--【拾柒】--:

感觉移动端就flutter最好,桌面端自己的项目可以尝试tauri,公司的项目最好还是Electron


--【拾捌】--:

我选择Electron。最近开源的一个旮旯管理器也是纯vibe出来的Electron桌面应用。主要就是JS生态对于vibe实在是太友好了。什么?你说性能?能跑不就行了


--【拾玖】--:

比较喜欢tauri,wails也挺不错的,就是社区热度有点低,憋那么久才憋出来正式的2.0,最讨厌的是electron​ 最近electrobun发展也挺快的

标签:软件开发