先说结论:如果你只是写个内部工具,Electron依然是首选。我那个内部数据看板用了三年Electron,4GB内存的办公电脑上跑起来风扇狂转,后来实在受不了决定试Tauri。Tauri刚出来那阵子吹得天花乱坠——Rust核心、系统WebView、安装包只有3MB,我信了。迁移过程不算难,前端代码几乎原样搬,但等我处理完IPC通信和磁盘读写后,实测内存只比Electron少了不到200MB(同一个页面,同一套React逻辑)。更搞笑的是,Tauri调起系统自带WebView后,在Windows 10企业版的老旧环境里,界面渲染偶发性白屏,查了两天发现是WebView2 Runtime版本太旧,客户IT不给装新的,我当场麻了。
后来我换了Qt 6.5,纯C++重写核心模块,UI用了QML。同样的看板页面,内存占用从Electron的1.1GB(开了DevTools)降到420MB左右,打包体积从85MB的Electron安装包变成12MB的Qt动态链接包。数据刷新频率从500ms一次改成100ms一次,CPU占用也没超过15%。但代价呢?如果你不是专门搞C++的,千万别学我。Qt的moc编译步骤、信号槽机制、还有那个让新手崩溃的qmlRegisterType错误,我花了整整两周才把所有构建配置理顺。最难受的是QML与C++之间的数据交互,我原有的JavaScript代码全废了,所有业务逻辑得用C++重写,一个日期格式化函数都写了二十多行。
所以我现在特别反感那些说“桌面开发选哪个都行”的文章。我给你个具体的对比:如果目标机器内存普遍大于8GB,Electron绝对能活得好好的,开发速度是Qt的五倍不止;如果用户用的是4GB内存的老机器(像很多工厂的控制机),你只能用Qt或者纯Win32,Tauri的Rust后端和WebView前端在同配置下比Qt多40%内存,还多了个莫名其妙的GPU进程。我说个真实数据:同一个Linux发行版上,Tauri打包的应用打开文件对话框要3秒,Qt只要0.5秒,差距原因在于WebView里的DOM解析和系统原生控件的I/O路径完全不一样。
另外别迷信“内存占用低=性能好”这种鬼话。我Qt版本的界面滚动流畅度不比Electron好多少,QML的TableView在大数据量下(一万行以上)居然还有严重的卡顿,最后我去C++侧做了model代理才好。反过来,Electron的React-Virtualized处理同样数据量反而丝滑。现在桌面开发最大的问题不是框架不好用,而是没人告诉你框架之间的取舍边界在哪。我最终的做法是:把Qt做成了一个壳,内部嵌入了一个Chromium控件来跑复杂业务页面——没错,绕了一圈又回去了,但至少内存控制在了600MB左右,崩了几次后终于稳定下来。如果你也遇到类似纠结,别问“哪个好”,先问“你的用户机器有多老”。