当前位置:首页 > 技术文章 > 正文内容

Tauri 2.0和Electron谁更适合做桌面应用 看数据对比与企业迁移实录

zonemu3周前 (09-24)技术文章18

最近听说有个叫Tauri的新框架出来了,说能解决很多桌面软件卡顿的问题。之前用Electron开发过软件的同学可能都有体会,装个应用动不动就要一两百兆,运行起来还要占好几百兆内存,电脑差点的直接卡成PPT。这回Tauri 2.0放出数据说安装包能压缩到3MB以内,内存占用比Electron低三分之二,还有公司真换过去了,效果还挺好。

Electron确实帮程序员省了很多事,但问题也明显。像Notion这种软件安装包249MB,其中96%都是框架自己占着。打开Slack直接要吃掉400多MB内存,都是因为它要把整个浏览器装进去跑程序。得物之前用Electron做客服系统,结果发现安装包80多MB,下载慢不说,低配电脑用着还老卡。他们改成Tauri后安装包直接缩到7MB,内存占用少了快一半,客服工作效率反而提升25%。

其实原理挺简单,Electron是把浏览器当零件打包进去,每个应用都自带一套。Tauri则是直接用系统自带的浏览器组件,比如Windows的WebView2或者苹果的WKWebView,这样不需要重复安装。后台也不用Node.js了,换成Rust写,Rust这语言跟C++差不多,缺点是学起来复杂。得物团队花三个月才改完,光适应Rust就用了四成时间,还好上线后一直稳定运行,没出过啥大bug。

具体数据对比的话,做个一样的Markdown编辑器,Electron版有52MB,Tauri只有3MB。开六个窗口,Electron要占400多MB内存,Tauri连200都不到。启动速度也快,Linux下冷启动Tauri0.39秒,Electron得0.8秒。不过换框架也有坑,特别是Linux系统的界面问题,有时候样式会乱。得物的人说刚开始效率降了三成,后来慢慢调整过来了。

选哪个得看团队情况。如果都是前端工程师,要做个聊天工具或即时通讯,可能Electron更合适。毕竟npm生态插件多,集成支付啥的功能方便,换个推送模块可能就一行代码的事。但如果追求极致性能,特别是敏感数据的加密应用,Tauri用Rust写的后台更安全,加密性能还能强40%。像密码管理器选Tauri更好。

企业级软件可能还是 Electron强,比如复杂IDE之类的应用,需要用到浏览器完整的功能,比如游戏开发用的WebGPU或者高级调试工具。不过Tauri现在支持手机端了,要是想同时开发手机和电脑应用,Tauri省事不少。就是得至少有个人会Rust,不然前期开发要绕不少弯路。

防火墙软件Firezone改用Tauri后内存减少60%,觉得划算。但也有人吐槽Linux系统兼容性差,同样的代码在Windows显示正常,Ubuntu可能就乱了。要是项目对系统版本有要求,Electron还能支持Windows7,Tauri最低得Win10。

挑框架就像买鞋,合不合适得自己试试。得物换了Tauri后用户满意度涨四成,但人家有技术实力折腾。普通小团队如果赶deadline,可能还是Electron快上马。东西都摆在明面,看实际需求选个最合适的就行,没必要硬捧哪个。

相关文章

前端React面试基础系列(React基础篇)

本文阅读8分钟,喜欢的小伙伴可以持续关系小编哦1. 什么是受控组件和非受控组件?受控组件像表单元素在用户输入时,像<input> <select>等元素需要绑定一个 chang...

GitLab-合并请求(gitlab合并请求合并者还原图解)

描述合并请求可用于在您对项目进行的其他人员之间交换代码,并轻松与他们讨论更改。合并请求的步骤步骤1-在创建新的合并请求之前,GitLab中应该有一个创建的分支。您可以参考本章来创建分支-步骤2-登录到...

使用GitLab实现CICD(gitlab配置cicd)

GitLab CI/CD 是一个内置在GitLab中的工具,用于通过持续方法进行软件开发:Continuous Integration (CI) 持续集成Continuous Delivery (C...

K8s 的 Namespace 到底解决了什么问题?

在 Kubernetes 的世界里,资源调度、服务编排以及自动化运维构成了它强大的基础架构能力。但随着集群规模的扩大和团队协作复杂度的提升,仅靠原始的资源管理手段已经难以支撑多租户或大型项目的管理需求...

HTML5设计与制作哪家强?全省50多所高职院校齐聚中山比拼

3月22日下午,2018-2019年广东省职业院校学生专业技能大赛“HTML5交互融媒体内容设计与制作”赛项在中山火炬职业技术学院开幕。全省51所高职院校的52支参赛队伍参加此次大赛。参赛师生将于3月...

如何使用HTML5实现多个元素的拖放功能

通过使用HTML5的拖放功能我们可以拖放HTML页面元素。在上一篇文章中,我们介绍了有关于可以拖放单个元素的代码。在接下来的这篇文章中,我们将来介绍关于允许拖放多个元素的代码。话不多说,我们直接看示例...