坑很多,过程坎坷,但应该是一劳久益,国内唯一看到的将 Tauri 用于较大商业项目的,原文: https://mp.weixin.qq.com/s/UxmJxU4-fv9GeRxl2fzOGw
1
x4gz 8 天前 5
我看到一个 App 如果是 Electron 的 除非是不得不用 否则我是不会下载的
|
2
WhiskerSpark 8 天前 1
其实大部分用户不怎么在乎这些点的,连 360 都有大把的人用。
|
3
MYDB 8 天前 via iPhone 3
本来不知道得物是什么,去搜了下,这玩意安装包再小也不会有多少人下载,估计内部空降领导刷 kpi
|
4
xxmym 8 天前
写跨端的大部分会写 Node ,不会写 Rust
|
5
weixind 8 天前 11
包体积 7M ,Electron 80M 下降 91.25%。
平均内存占用 249M Electron 497M 下降 49.9%。 平均 CPU 占用百分比 20%,Electron 63.5%下降 63.19%。 没啥参考价值。 1.得物商家端用户量不会很大,ToB 甚至可以点对点兼容。 2. 不利于招聘,会 rust 的前端要比会 node 的前端小一个数量级。 3. Tauri 没有什么 Electron 做不到新 feature 。 4. 我一直不太喜欢用新技术来刷 KPI 的团队和技术选型。 我自己对技术选型有一个要求:贴近业务实际,能够满足当前业务需求,也预留扩展空间,但避免过于激进,确保交付的产品和系统具有实际价值。 |
6
lloovve 8 天前 via iPhone
Rust 都能写夸平台 app 了?
|
7
assclb 8 天前 23
我下个暴论: 这么大的性能提升不单纯是切换技术栈得来的 (不否认 Tauri 的优秀), 主要还是 得物商家客服 Electron 版本做的稀烂
- 登录多一个账号的时候是开一个全新的应用实例 (10 个客服就等于开着 10 个 Electron 应用在跑) - 账号密码登录以后是明文存储的 - 右下角的托盘图标都是空白的 - 全局还挂着某个研发的 QA Test 工具 - Vue3 Reactive 直接包着一个超大对象 - 编译完代码几乎没有什么混淆 在这种态度下这种设计下, 我不认为这是 Electron 应用的真实水平 至于 Electron 兼容 win7 嘛, 把 Electron 版本降回 22 就好了 |
8
a62527776a 8 天前
我以前弄过 Electron 我记得不处理的包是 80M 我记得调整些啥之后就变成 20 多 M 了
|
9
565656 8 天前
clash 都转这个了
|
10
liaohongxing 8 天前 2
tauri 目前还不成熟 ,linux 是 webkitgtk ,windows 是 webview2 , 渲染内核都不一致, 外观表现都不敢保证一致, 另外静默打印, cookie 等 api 都没,除了小,暂时没有太大优势, 观望一下
|
11
clemente 8 天前
开发成本 呢?
|
12
iblessyou 8 天前
|
13
qinjiang 8 天前
成本,效率,质量。不可能三角,只说 tarui 有多好,为什么不提开发效率和成本呢,敢拿出来对比吗
|
14
liaohongxing 8 天前 1
另外 linux 还有 libwebkit2gtk-4.0 ,libwebkit2gtk-4.1 版本碎片化,互不兼容,macos 估计也有一样问题。
|
15
ersic 8 天前 5
@weixind 文章写的理由挺充分的啊
>但是,随着时间的推移,直到 2024 年的今天,商家客服的入驻量和使用用户越来越多,用户的电脑配置也是参差不齐,Electron 的弊端开始显现: 性能方面:随着商家客服入驻数量的快速增加,现有 Electron 桌面应用在多账户+多会话高并发场景下,占用内存特别大,存在性能瓶颈; 安全方面:Electron 在内存安全性、跨平台攻击、不受限制的上下文和依赖管理等方面存在一些潜在的弱点; 体验方面:现有 Electron 桌面应用包体积大,下载、更新成本较高; 信息集成方面:商家客服目前需要在商家后台、商家客服后台、商家客服工作台 3 个系统来回切换操作,使用成本很高。 |
16
darklinden 8 天前
@weixind
1. tauri 虽然不大好用,但是前端还是 h5 套壳,electron 能展示的前端都可以,能用的前端技术栈都可以,只是需要底层操作的走 rust ,而且本身框架也提供了一些绑定可以直接用 2. tauri 是用的 webview2 ,看系统支持,可能需要补插件,包就大了 3. 自己试过,写小工具什么的 tauri 真的还挺好使 |
17
xu455255849 8 天前 1
electron 开发 我建议做实际业务 不要无脑用新技术,稳定性才是最重要的,electron 绝对是目前最稳定的选择,毕竟 chrome 是经得起考验的
如果你的项目非常考虑性能,我建议直接原生写 就别套壳折腾了 |
18
xu455255849 8 天前
electron + rust + C++ DLL 其实理论上啥也能做,也不存在性能问题,至于 chrome 那点包体积,99%用户根本不关心
抖音的直播伴侣就是 electron 套壳 性能不差的 |
19
weixind 8 天前 1
@ersic
这几个点都不太能够支撑切换技术选型。 性能方面:高并发场景内存占用大并没有做具体分析,我没深入使用过 electron ,但是如果高并发的内存占用成倍增加,大概率是他们使用姿势有问题。内存占用无非就是 node 进程 + n * 页面进程。能缩减的就是 node 进程 ---> rust 进程。这不太能缩减多少内存占用。 安全方面:这个有点扯淡,本质就是说 node 内存安全性不如 rust 呗,前端的切换没啥意义,这个不能支撑切换技术栈。 体验方面:80m 在现代网络和硬件下可以忽略不计。 信息集成:这看上去是产品问题,不是技术问题。 |
20
liubaicai 8 天前 1
没有人选 electron 是因为它性能好吧,无非就是开发简单跨平台好。rust 太劝退了。
|
21
musi 8 天前 6
不一定是一劳永逸,Tauri 说白了就是用电脑自带的 webview ,这个兼容性才是大坑,Electron 不管你啥系统都给你打包一个相同版本的 chrome 进去,chrome 有一个强大的团队去维护,系统自带的 webview 就不一定了
和 Electron 相比只有一个小的优势了 |
22
lisongeee 8 天前 2
这篇文章滑到最底部可以看到他们团队遇到的 Tauri 相关问题
各位如果遇到这些问题要怎么解决呢?反正这些问题看的我头大 为了工期和团队合作,我选 Electron ,我只可能在个人项目里用 Tauri |
23
musi 8 天前 1
说 electron 性能不好的,说到底 electron 就是封装了一个浏览器进去,用浏览器打开网页,网页做的烂换啥 webview 套不都一个样,最起码 chrome 底层还有个 v8 给你优化一下。
主进程卡,起一个进程调 C++/Rust 去处理不也是一样 感觉就是这个团队 electron 没好好做,换成 Tauri 好好做了,然后说是切换技术栈带来的优势 |
24
shuson 8 天前 4
前两个月,把 electron 的一个 win+macos 端的 用 golang 的 https://wails.io/ 重写了,体积减少 90%
|
25
Tiller 8 天前
rust 的学习曲线不够友好。但是让我选,我肯定选 tauri 。
楼上不喜欢用新技术栈刷 KPI ,但是我要多挣钱,那肯定只能刷 KPI 啊。 我最喜欢用技术做自己的护城河,不然一下子把我裁了,轻轻松松找个实习生过来顶替我? |
26
dudubaba 8 天前 4
不然会说前端娱乐圈呢,毕竟业务量不多了得折腾折腾,不然日报都写不出来了吧。
|
27
FightPig 8 天前
国内这东西看使用对象,像我们客户,有的还在用 win7 ,tauri 一堆人装不起来,没办法还是改回 electron
|
28
iliaoliao 8 天前
rust 新版本都已经放弃 win7 了,一直停留在 rust 老版本也挺难受的。
而且一些 rust 库依赖的也是最新版本的 rust ,建议用 tauri 可以直接放弃支持 win7 了。 |
29
aptupdate 8 天前 via iPhone
文章里举例就举例,提 Clash Verge 是什么意思。
|
30
Vegetable 8 天前
仔细读了一半,我的评价是:莫名其妙。
从上半部分来看,这个 Electron 应用代码主要集中在前端,后端需要用 rust 替换的代码不多。替换带来的性能提升应该是很有限的。 |
31
rick13 8 天前
你看他们下面遇到的问题就能看出来,想解决都不算简单,而且基本都是 tauri 先天带来的问题。如果他们解决网络请求的时候用的是 http 的包,那还有可能内存泄露(不知道现在修没修)。我只用过 tauri ,但要我说有这功夫不如再接着把 electron 给优化优化
|
32
zhangyuzs61666 8 天前
@weixind 大概率是防御型编程,越是小众的技术路线越难以被替代
|
33
wusheng0 8 天前 via Android 1
吐槽一下,这篇文章写得太不流畅了,随意断句,各种口语。
|
34
xiaoqidev OP |
35
SleepyRaven 8 天前
tauri 的终点是打造出一个 electron
|
36
LHRUN 8 天前
写的很棒 关注你们公众号了 👍
|
37
xiaoqidev OP |
38
shintendo 8 天前
个人项目用了 Tauri 2 开发,现在后悔死了,遇到问题真的是叫天天不应叫地地不灵😂
|
39
stevezhengs 8 天前 via Android
闲鱼用的是哪个?
|
41
daysv 8 天前 1
你们这商家客服有必要搞应用么, 搞个 web 不就好了,electron 可以很简单和 web 兼容。
|
42
quantum00549 8 天前 1
@x4gz +1, 极其恶心, 毫无美感, 全平台一个风格, 没有自己的设计特色, 除了 vscode 这样非常牛逼的产品, 一堆阿猫阿狗都觉得自己能写全平台软件了
|
43
xiaoqidev OP |
44
weixind 8 天前
@stevezhengs 闲鱼是移动端上了一部分 flutter 页面吧。
|
45
Yadomin 8 天前
光是看他们那一堆问题就已经把人吓跑了
|
46
jayin 8 天前
写得非常详细的好文! 但是跳到 Tauri 这个坑,我就无法认同了。看看什么时候再来一篇:《从 Tauri 到 ELectron 的迁移实践》
|
47
snarkprayer 8 天前
平均 CPU 占用 Electron 63.5%,你说这是 Electron 的问题我是不信的
|
48
gainsurier 8 天前 via iPhone
得物有啥需求不能直接用网页要上 app 吗
|
49
retrocode 8 天前
第 N 次 rust 入门
|
50
june4 8 天前 1
为什么楼上一堆人在扯兼容性???我们写正常网站的难道不需要处理兼容性?现在又不是 IE6 时代,除了特别要求没什么麻烦。
这时候你们怎么不反对在电脑上安装运行 100 个 chrome 了,反正我是能不用 electron 软件就不用,如果是巨无霸类型如 QQ 这类也就算了,小工具类的也上 electron 怎么好意思的? |
51
weijancc 8 天前
不错不错, 非常好的技术文章
|
55
Kisesy 8 天前
这类 webview 套壳都有个缺点,就是会在 AppData\Roaming 下生成缓存,有点难受
electron 和 wails 都会,不知道 tauri 会不会 |
56
vicalloy 8 天前
用 tauri 写过一些“玩具”。开发体验还行,坑也不少。
受限于 tauri 和 web view 的限制 ,有些功能不太好实现。 |
57
thisrabbit 8 天前
我倒是比较好奇文中提到问了减小安装包体积,采用了在线下载 Webview2 的方式(如果本机 Windows 没装的话),但是在国内的网络环境下这个过程顺畅嘛
|
58
hajimi22222 8 天前
@565656 clash 原本用的啥?
|
59
jason94 8 天前
文章列举的几个 electron 弊端是确实存在,但不足以作为迁移 Tauri 的依据。比如内存占用大,有没有可能是哪里有 bug 内存泄露了,我也不知道你们有没有考虑过做一遍整体的性能优化。
整一波这么大的,说实话没看出来迁移的必要性,更多的可能是为 kpi ? |
60
hingle 8 天前
rust 支持 win7 的,目前还在 nightly 版本,直接以 target 的方式使用。
|
61
mingtdlb 8 天前
Electron 的应用用过,大多数 app 都是一个字 卡,卡的不能用,什么体积、内存都是小事;
Tauri 的应用也用过几个,bug 多 |
63
jaycezhang7890 8 天前
@june4 文章中也说了,tauri 在不同平台的兼容性上不一样,文章中也有提及:
“对于样式兼容性来说,因为 Electron 在不同操作系统内都集成了 Chromium 所以我们完全不用担心样式兼容性的问题。但是对于 Tauri 来说,因为不同操作系统使用了不同的 Webview ,所以在样式上,我们还是需要注意不同操作系统下的差异性,比如:以下分别是 Linux 和 Windows 渲染 Element-Plus 的界面:可以看到在按钮大小、文字对齐等样式上面还是存在着不小的差距。 除了上述问题,如果你需要兼容 Linux 系统,那么还有 webkitgtk 在非整数倍缩放下的 bug ,应该是陈年老问题了” 还有最后说的 Webview2 的兼容性问题,说 “因为 Tauri 在 Windows 系统上比较依托于 Webview2 作为渲染的容器,虽然 Tauri 提供了检测本地电脑是否有安装 Webview2 以及提供联网下载的能力,但是因为 Windows 电脑千奇百怪,经常会出现未内置 Webview2 的 Windows 电脑下载不成功而导致程序无法启动的情况:对于这种情况,我们虽然可以将 Webview2 内置到安装包里面,在用户安装的时候进行内置解压安装,但是这样包体积就跟 Electron 相差不大。 ” |
64
SmiteChow 8 天前
没人提 react native ,那我提了啊,这下讨论应该终止了。
|
65
lizhenda 8 天前
把写的稀烂的锅丢给 Electron 我是鄙视的,成千上万的 web 网站各个性能都不一样,vue 、react 等各个框架都可以写 Electron 的 UI 页面,各个公司各个程序员写出来的性能也都是不一样的。tauri 你看它发展多久了,但各个重大问题有多少一直没有解决,性能裸跑几个 web 框架自己比一比就知道是个笑话了。
|
67
wee911 8 天前
得物也吃太饱了,Tauri 整个开发体验是很累很累
|
68
GopherDaily 8 天前
|
69
isbase 8 天前 via iPhone
说明啥。 该裁掉这些人了。 闲着慌
|
70
ShadowPower 8 天前
快速看了一遍,感觉选 Tauri 并不妥。
我一直觉得 Tauri 适合用于给 Rust 项目加上一个基于 Web 技术的图形界面 而不是将核心逻辑都用 JavaScript 实现的项目打包成桌面应用…… |
71
googleaccount 8 天前
这不是闲得慌吗?只能认为是年底了晋升考核需要新东西来讲 面向晋升的技术迁移。
我之前用 NW.js 照样处理他这种需求 实际可能比他的还复杂。面对后面新出的 electorn Tauri 完全没有迁移的想法 |
72
kehuduanbuxing 8 天前 1
为了晋升不折手段的技术自嗨
|
74
wasd6267016 8 天前 6
突然发现在中国做技术分享挺难的
作者写了个转型文章 马上要被各位技术大牛喷的被裁了 |
75
youyang 8 天前
@googleaccount 兄弟你看到本质了,好厉害
|
76
richardhughes 8 天前
前端仔为了不被优化卷成啥样了
|
77
buf1024 8 天前
怎么说呢,现在 v2 发布了,如果你之前是 v1 写的,而且代码量有一定估摸,那么估计你升级的时候,想死的心都有。
|
78
EspoirBao 8 天前
看了半天,突然想起来另外一个团队是如何解决在使用 electron 的时候遇到的问题的
https://code.visualstudio.com/blogs/2018/03/23/text-buffer-reimplementation 到现在我都很佩服那些搓出来 vscode 的人,感觉还是跟大环境有很大关系 |
79
9ki 8 天前
看完文章了, 结论就是得物商户端选 Electron 还是 Tauri 不会有超过 10% 的性能差距, 理由是对于 Native 部分的依赖主要是 系统通知/热更新, 这两点都不会对性能产生较大差异.
当然作为同为开发的立场没必要指责别人, 技术栈改造可以创造新的岗位需求以及晋升机会, 对开发来说百利而无一害 |
80
paopjian 8 天前
给 win7 做支持还是好操蛋啊, 看着就绝望
|
81
ochatokori 8 天前
|
82
billbob 8 天前
这是啥结论,vs code postman,el 上线很高,下线也很高,要会优化,还有 Xspece 很多控制页面也是 EL 写的 底层都是 c++的你不是更觉得卡
|
83
lisxour 8 天前
@clemente #53 chat 啥都没用,很多都是因为 feature 不足或者 bug 导致的,神仙都救不了,只能等官方修,所以 tauri 真的还有很长的路走
|
84
YiXinCoding 8 天前
|
85
frankilla 8 天前
不懂技术,但是我看到标题先想到的是 QQ/TIM 。
|
86
ChrisFreeMan 8 天前
@shintendo 你要相信 VSCode/Obsidian 团队啊😂,他们不动你也不要动
|
87
SekiBetu 8 天前
中国最不缺前端,tauri 那些屎一样的问题就交给大把的程序农民工解决吧
|
88
Crawping 8 天前
纯纯刷 KPI....
|
89
tabc2tgacd 8 天前
这个内存占用和 cpu 占用 下降我无法理解,他只是不需要打包 chromium 使得安装包变小了,但运行时的环境应该还是一样的吧,怎么 cpu 和内存占用也下降了呢?难道不是代码优化的结果?
|
90
adoal 8 天前
@june4 因为网站要面对开发者不可控的浏览器种类,兼容性是必须要处理的,而做桌面软件,如果能通过确定的运行时环境来保证内嵌的浏览器行为是可控的,自然可以省掉兼容性处理的成本,无非就是衡量一下因为体积给用户带来的反感而导致的潜在损失和为了处理操作系统自带 webview 兼容性问题导致的成本哪个更重要罢了。
“小工具类的也上 electron 怎么好意思的”倒是说到点子上了。比如做特定平台的小工具(不涉及跨平台兼容性适配),界面又想用 web 技术栈,还是可以考虑的。Tauri 确实不适合所有场景,但也不是没有场景可用。 |
91
PTLin 8 天前
今天知乎上看到这个 https://www.zhihu.com/question/570795980/answer/46249431609 当时没细看就记着写了什么兼容性问题,看到这个帖子回去看了下,果然是一个人写的。
|
92
xuecan 8 天前
所以 为啥不好好的把 web 的全功能开放了 而是总是要 web 打开不给用 让下载各种 app
|
93
muwoo 8 天前 2
@tabc2tgacd 简单说几句吧,Electron 应用之前是从内部客服网页版迁移过来的,整体代码没做啥大的改动,就套了个 Electron 壳就上线了,所以里面有很多历史包袱和低性能的事情。
迁移到 Tauri 过程中之所以性能提升这么明显的主要原因: 1. 业务代码做了大量重构,修了很多影响性能的历史包袱。 2. 对于大量消耗 CPU 资源的逻辑迁移到了 Rust 层去做处理 3. 多账号合并到单窗口。 4. 还有一些跟业务相关的优化... 另外,这个分享只是为想深入了解 Tauri 的小伙伴提供一个参考,并不是说让大家赶紧放弃 Electron 直接用 Tauri ,相反,我提到了很多问题,希望大家慎重考虑。 另外,我也希望技术社区能够多探讨技术本身,这样国内社区氛围才能越来越来好,谢谢各位老板的意见! |
94
duhbbx1119 8 天前
打包体积小是真的,webview windows 和 linux 上不一致的问题确实有
|
95
jqtmviyu 8 天前
tauri ×
wails √ |
98
IslandOwnerHuang 8 天前
Electron 动辄几百 MB 的体积是真恼人,上面的几位“技术大牛”把人家的迁移喷的一文不值,但我从用户的角度来看就是实打实的提升。我不在乎什么 KPI ,我只在乎我的使用体验。
|
99
sharpy 8 天前
我写 tauri 只把前端当基本的界面,其余都是在 rust 中处理
|
100
AlexHsu 7 天前
不知道为啥现在还用 electron 打包前端 用 tauri 基本没有啥坑 包还小
|