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

Skye 2026-04-07 10:56 1

宣传主张



  • 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 太难用了


如有疏漏欢迎指出~

最新回复 (19)
  • Kkk Lls 04-07 11:03
    1

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

  • ArkaneFans 04-07 11:19
    2

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

  • Firefox‎ 04-07 11:20
    3

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


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

  • 长秋 04-07 11:20
    4

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

  • kael 04-07 11:20
    5

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

  • Firefox‎ 04-07 11:21
    6

    公司的项目最好还是Electron



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


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

  • Firefox‎ 04-07 11:23
    7

    桌面端的话



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

  • baicha 04-07 11:24
    8

    可能 Tauri 的缺陷还是在于 rust 生态?

    我之前使用 rust 编写 web 后端时,发现很多包都是处于 0.x.x 版本,都未正式发版

  • yi124773651 04-07 11:25
    9

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

  • ring0 04-07 11:26
    10

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

  • Neo 04-07 11:26
    11

    Wails和Tauri是一类东西,都是一门语言后端+webview

    Ft是自己的渲染引擎

    el是最成熟和古老的,最吃资源

  • Firefox‎ 04-07 11:29
    12

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

  • Firefox‎ 04-07 11:30
    13

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


    最多做个逻辑兼容层

  • ArkaneFans 04-07 11:33
    14

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

  • 丸子 04-07 11:33
    15

    flutter我觉得最好,当时还学了几天,可惜项目没有下来。electron基本懂前端的就是有手就行,但是缺点就是体积大,还有就是底层通信麻烦,前几年一个项目里面需要操作更底层的api,又不会c++,然后node-ffi又和新版本完全不匹配,挺麻烦的,不过现在有AI了,这个问题不大。

    tauri我最近一直在用ai给我写项目,编译开发阶段过程体积大,打包后小,也不懂rust,谈不上感觉,后面我做好了,发个帖子,让佬用用看

  • ArkaneFans 04-07 11:35
    16

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

  • chjs 04-07 11:39
    17

    很好的一篇文章。我本身是一个python后端开发。。。。。python的桌面应用真是一眼难进,而且我还是mac开发机,家里人用win运行。python还不能跨平台打包。。。

    最近在帮家里人写个桌面端小软件,这几个调研了一圈,最后还是决定用wails,直接给整个压缩包打包了webview文件进去 ^-^ 本身有一定的go基础,能在开发中学习(虽然现在基本都是vibe coding)了。

    佬的这篇文章介绍的很详细,后续有需求可以方便考虑技术栈了。

  • Meiko Mei 04-07 11:40
    18

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

  • Meiko Mei 04-07 11:41
    19

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

* 帖子来源Linux.do
返回