V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zyxk
V2EX  ›  问与答

想问一下大家为什么讨厌 electron 应用呢? 那其他 Web 应用呢 ?

  •  
  •   zyxk · 2022-12-02 11:50:23 +08:00 · 7314 次点击
    这是一个创建于 754 天前的主题,其中的信息可能已经有所发展或是发生改变。
    做 win/mac 的工具类软件, 想问一下大家为什么讨厌 electron 应用呢?

    是因为体积大? 还是内存占用大? 或者是反应速度慢?


    Tauri / wails / 其他 WebView 应用呢? 是否有相同问题呢?
    第 1 条附言  ·  2022-12-02 23:45:54 +08:00
    看到更多的人回复是体积大和重复占用,
    那随着微软将 WebView2 更新到系统内, 那 WebView2 应用是不是就好的多了
    57 条回复    2022-12-04 15:36:11 +08:00
    dcsuibian
        1
    dcsuibian  
       2022-12-02 13:33:02 +08:00   ❤️ 3
    对我来说,还是因为卡慢。
    其实单看一次按钮点击也觉察不出来。但是长期使用后,冷启动、加载、跳转、窗口缩放时慢的感觉会越来越明显。

    另外,手机上的小程序和 h5 套壳应用也功不可没。手机性能差,能够更明显地感觉到速度上的差别。有了这种观念再去观察电脑上的 webview 就更有感觉了。
    hangbale
        2
    hangbale  
       2022-12-02 13:40:49 +08:00
    又大又慢,tauri 最起码包就小不少
    8zip
        3
    8zip  
       2022-12-02 13:41:44 +08:00 via Android   ❤️ 14
    他要是直接做个网页,我称他为英雄
    nomagick
        4
    nomagick  
       2022-12-02 13:44:02 +08:00   ❤️ 20
    vscode 也是 electron, 没人觉得卡
    实际上 electron 卡并不是因为性能不足,而是因为阻塞,主进程和渲染进程之间互相踩脚

    说到底开发桌面应用是有门槛的,以目前 js 程序员的平均水平,做桌面应用非常勉强。

    怎么管理 IPC ,怎么在多进程间同步状态,怎么管理本地存储,怎么处理激活态 /折叠态的转化,怎么给异步任务依赖排序,怎么不让以上所有操作相互阻塞

    你突然抓一个前端来做这些事,能搞得好就怪了
    SuperManNoPain
        5
    SuperManNoPain  
       2022-12-02 13:44:28 +08:00
    可以做成 web 页面却做了个应用,他真的,我哭死
    sechi
        6
    sechi  
       2022-12-02 13:50:59 +08:00
    @SuperManNoPain 大部分时候是因为网页会有各种限制才去选择用 electron 套一层吧
    ck65
        7
    ck65  
       2022-12-02 13:56:36 +08:00   ❤️ 9
    我的系统里本没有 Google Chrome ,也没有 Chromium ,拜 Electron 所赐,现在我的系统有了接近 10 个 Chromium 副本。类比一下这个场面:好比每需要安装一个新程序,你就要在 VMware 里创建一个新虚拟机来运行它。Electron 的臃肿就是这种观感。
    monkeyzsf
        8
    monkeyzsf  
       2022-12-02 13:56:39 +08:00
    我自己干活涉及一些操作封装了 electron 做了个自用的小工具,包括多开微信也通过 electron 多 sessions 方式封装过 App 。但是体积大,响应慢确实是问题。自从 flutter 适配桌面端后,我就把小工具迁移到了 flutter 封装的新 App 上,体积小了,速度快了~
    monkeyzsf
        9
    monkeyzsf  
       2022-12-02 13:57:46 +08:00   ❤️ 1
    @nomagick vscode 卡,你不卡可能是你电脑强,但不是所有人都有很好的电脑来运行
    shakoon
        10
    shakoon  
       2022-12-02 14:04:41 +08:00   ❤️ 1
    @ck65 我觉得你在说张小龙,但我没有证据
    christin
        11
    christin  
       2022-12-02 14:46:42 +08:00 via iPhone
    @monkeyzsf 那有没有可能是你的电脑不好呢?
    我前公司配的一台淘宝都找不到的老 thinkpad 都能正常运行不卡顿
    christin
        12
    christin  
       2022-12-02 14:48:09 +08:00
    我是觉得 ui 不好看,而且操作过程中会有偶尔的卡顿情况,没有原生的好用。
    tool2d
        13
    tool2d  
       2022-12-02 14:55:02 +08:00
    用 electron 可以调用 nodejs 函数,而 web 就只能调用浏览器的 JS api 。

    用着卡不卡都是其次,我觉得脱离浏览器快速写一套美观的界面出来,对于普通人是很难的一件事情。
    libook
        14
    libook  
       2022-12-02 15:03:01 +08:00
    Electron 本身是个好框架,只不过因为大大降低了开发桌面应用的门槛,导致低质量应用太多,所以给了人们不好的印象。

    安装包体积和内存占用通常会大一些,毕竟带着个浏览器,反应速度方面其实 V8 效率已经奇高了,只不过再好的工具在水平不好的人手里都只能做出水平不好的应用。

    原生技术栈开发肯定能更好地控制体积、内存占用和提高性能,但是通常开发成本要比 Web 技术栈要高,这就是产品运营上的取舍问题而已。
    abcbuzhiming
        15
    abcbuzhiming  
       2022-12-02 15:22:38 +08:00   ❤️ 8
    @nomagick
    请不要在拿 vscode 作为 electron 的好例子。vscode 用了多少魔法,自己去查一下好吗?这是顶级公司的顶级大佬的玩法,别说普通程序员,中等偏上的项目组,都搞不出 vscode 这种东西,那它的成功能有泛用性吗?
    wxw752
        16
    wxw752  
       2022-12-02 15:24:47 +08:00
    不讨厌啊
    nomagick
        17
    nomagick  
       2022-12-02 15:30:22 +08:00   ❤️ 2
    @abcbuzhiming 没啥魔法,代码都是公开的,人家治理得好而已;
    一般应用也用不着那么大的盘子,只需要架构上不出错误就可以了,别阻塞,别来回阻塞
    yannxia
        18
    yannxia  
       2022-12-02 15:34:30 +08:00
    不是挺好的嘛,没有 electron 的话,我的 linux 都没有这么多 APP···
    0o0O0o0O0o
        19
    0o0O0o0O0o  
       2022-12-02 15:37:14 +08:00 via iPhone
    不讨厌
    chrawsl
        20
    chrawsl  
       2022-12-02 15:41:42 +08:00
    electron 应用起步就 100mb++了,不过有一说一还是比小而美小多了,我觉得也不是不能接受
    weixiangzhe
        21
    weixiangzhe  
       2022-12-02 15:43:32 +08:00
    linux 用户表示多来一点也行
    ChefIsAwesome
        22
    ChefIsAwesome  
       2022-12-02 15:47:57 +08:00
    看了眼电脑。除了游戏,也没装几个本地程序。steam 、ea 、epic 、ubi ,迅雷、显卡控制软件,这几个应该都是 electron 的。
    GeruzoniAnsasu
        23
    GeruzoniAnsasu  
       2022-12-02 15:50:18 +08:00   ❤️ 2
    今日新增讨厌理由:

    它 tm 一个桌面 app 都能用 filter css 瞎我眼,还改不了
    woshipanghu
        24
    woshipanghu  
       2022-12-02 16:18:45 +08:00 via iPhone
    现在谁还在乎 200m 的大小 不是以前了
    WinkeyLin
        25
    WinkeyLin  
       2022-12-02 16:26:56 +08:00 via Android
    纯行外人,Electron 为什么不引入一个通用依赖呢,就比如微软的那一大堆运行库,所有 Electron 应用只需要调用这个库,就不用再自带一个内核了
    GeruzoniAnsasu
        26
    GeruzoniAnsasu  
       2022-12-02 16:29:36 +08:00
    @WinkeyLin 因为「通用依赖」与「微软的」 就相互矛盾……
    leonshaw
        27
    leonshaw  
       2022-12-02 16:42:44 +08:00
    @WinkeyLin 有啊,得靠包管理器,比如 archlinux 上 vscode 就是依赖 electron 的
    iamzuoxinyu
        28
    iamzuoxinyu  
       2022-12-02 16:45:19 +08:00 via Android
    @WinkeyLin 有的…webview2 和 webkit2gtk
    liuw666
        29
    liuw666  
       2022-12-02 16:48:17 +08:00 via iPhone
    electron 安装后就超过 200 了。 电脑里无数个浏览器…… 我只需要一个 chrome
    dinghmcn
        30
    dinghmcn  
       2022-12-02 17:18:14 +08:00
    @woshipanghu #24 谁不在乎?更新的时候想骂人好不
    hazardous
        31
    hazardous  
       2022-12-02 17:59:24 +08:00
    抛开速度不讲。
    网页太灵活,一个界面可以做成无数种样式,交互设计千奇百怪良莠不齐,一个交互动作的各个阶段都可以被 hook 然后异常处理不当就出现了各种问题。不止网页,各种 DirectUI 都让人感觉很生硬。
    而原生控件就很简单,简单意味着可靠,简单了也容易做得完美,你做什么动作就知道会有什么响应,心里就感觉很踏实。
    yao177
        32
    yao177  
       2022-12-02 18:37:41 +08:00
    pwa 明显更好用
    ysc3839
        33
    ysc3839  
       2022-12-02 18:48:40 +08:00
    @ck65 #7 这是 Windows 和 macOS 应用的标准操作,应用会自己打包依赖库。还有很多应用依赖别的库,为什么没人说呢?比如苹果的 Swift 就要打包一堆 libswift 运行库。许多 Qt 应用也会打包一堆 Qt 运行库。可能大部分人反感的不是重复依赖,而是体积大。
    @WinkeyLin #25 这样会导致 DLL Hell ,因为不同应用可能依赖不同版本的库,所以当硬盘容量逐渐增大后,Windows 和 macOS 应用就选择打包依赖来规避这个问题。当然理论上好的项目能实现较好的兼容性,可以尽可能减少共用库带来的问题,但是最省事的选择还是直接绕开这个问题。
    kongkongye
        34
    kongkongye  
       2022-12-02 18:58:11 +08:00 via iPhone
    @ck65 臃肿感是相对的,比如手机用微信跟钉钉就是两个感觉,微信是原生的感觉,钉钉打开啥页面都慢;然后 java 里一个报错可能看到几十层的调用栈,跟 c 比起来效率可能低十几倍,但如果硬件性能上去,这种差距也感受不出来,可能是 1ms 跟 10ms 的差距。
    kongkongye
        35
    kongkongye  
       2022-12-02 19:01:49 +08:00 via iPhone
    @chrawsl 所以像 utools 这种工具箱,里面塞一堆工具,平均到每个工具头上就不大了。但如果一个工具装一个 utools 那就不一样了。
    superrichman
        36
    superrichman  
       2022-12-02 19:12:13 +08:00 via Android
    @WinkeyLin 有没有可能,electron 就是为了摆脱平台限定的依赖库而开发的跨平台框架。
    StephenHe
        38
    StephenHe  
       2022-12-02 19:18:39 +08:00
    台式机 vscode 没事,换笔记本风扇动不动嗡嗡响
    yolee599
        39
    yolee599  
       2022-12-02 20:02:42 +08:00 via Android
    体积大,吃内存,打开加载半天,经常卡顿,卡顿的时候界面会忽然错一下位,让人担心是不是要崩溃了
    PRStarDust
        40
    PRStarDust  
       2022-12-02 20:03:05 +08:00
    我电脑上日常用的 Electron 软件中有 bilibili 新版客户端和 Clash For Windows 。这两个软件我最讨厌的地方就是每次点开主窗口,他们都不是居中放置的,即使我将他们最大化,也无法像普通应用那样记住窗口最大化的状态
    除此之外感觉不爽的就是体积偏大,运行起来有时候界面跳转都感觉卡……
    yvescheung
        41
    yvescheung  
       2022-12-02 20:41:19 +08:00 via iPhone
    因为与其用 electron ,不如直接上网页版
    wu67
        42
    wu67  
       2022-12-02 20:47:57 +08:00
    响应速度. ele 真调教得好的也就 vsc 一家吧, 别的我只能说能用, 或者说我孤陋寡闻没用过...

    另外讲真的, 用 js 写界面, 更早之前, foobar2000 的很多皮肤界面也是用 js 插件实现的, 那响应叫一个难受...

    再另外, 前端码农, 能写好代码的, 真的不多, 企业应用开发给的工期足够的更不多, 两相叠加, 我真的不太看好 ele 应用
    isbase
        43
    isbase  
       2022-12-02 20:49:15 +08:00
    1password 8 和 Spotify 体验挺好
    hhacker
        44
    hhacker  
       2022-12-02 20:53:36 +08:00 via Android
    个人非常喜欢 electron
    subframe75361
        45
    subframe75361  
       2022-12-02 21:33:45 +08:00
    系统级 webview 不够普及,而且兼容性也是个问题,只好选 electron

    顺带一提,tauri 版的 clash 从托盘打开页面比 electron 版慢,win11
    flyn
        46
    flyn  
       2022-12-03 02:02:15 +08:00
    因为之前用的 Delphi 程序体积小到惊艳。
    别说 Electron ,看到 Qt 写的应用都觉得臃肿。
    RealVic
        47
    RealVic  
       2022-12-03 02:21:59 +08:00   ❤️ 1
    很多人用着个垃圾配置的电脑,对着 2022 年开发的应用挑三拣四,这种人一辈子的水平也就那样了,活该用一辈子奔腾当房奴妻管严
    silvernoo
        48
    silvernoo  
       2022-12-03 03:43:08 +08:00
    不讨厌,硬盘内存现在都不值钱
    woshipanghu
        49
    woshipanghu  
       2022-12-03 08:35:27 +08:00 via iPhone
    @dinghmcn 更新 1g 以下的大小 速度都区别不大
    MEIerer
        50
    MEIerer  
       2022-12-03 08:57:01 +08:00
    我目前写 demo 经常用 electron ,感觉良好,可能要接触实际项目才能发现楼上的问题咯
    charlie21
        51
    charlie21  
       2022-12-03 09:17:14 +08:00
    每个程序自己带着自己的 dll 这是绕过了依赖地狱问题 ( Dependency Hell 依赖地狱问题. 现在项目里有两个依赖 A 和 C ,A 和 C 分别依赖 B 的不同版本,如何处理 )

    浏览器不过是一个体积大一点的 dll

    你只能选择安装或不安装一个软件

    安装了很多 electron app 的人,大多数人在选择无视这个问题。你凝视这个问题,可你解决不了,是不是很生气?
    甚至还会被人说成 你在 “既让马儿跑又让马儿不吃草”。是不是破防了?
    opentrade
        52
    opentrade  
       2022-12-03 10:55:14 +08:00
    @hangbale 市面上有啥 tauri 应用吗?
    pursuer
        53
    pursuer  
       2022-12-03 11:14:47 +08:00
    @charlie21
    现在 Chrome 不都是自动更新的最新版本,网页也没见经常出问题,为什么 electron 就有版本锁定和兼容的问题?
    yjw239
        54
    yjw239  
       2022-12-03 11:47:49 +08:00
    挺好的,降低跨平台成本,对于用户来说选择多了。还有除了开发群体,大多数用户压根不在意内存和容量的占用。
    magicdawn
        55
    magicdawn  
       2022-12-03 13:09:10 +08:00 via Android
    Electron 比 Tauri 简单太多,工作量根本不是一个量级,说换 Tauri 的,只能说你行你上。
    mac 上 WKWebview 调试极其困难,莫名其妙不显示,不报错。devtools 很难用。
    zxCoder
        56
    zxCoder  
       2022-12-03 15:21:48 +08:00
    大多数人有这个需求
    大多数人也不介意
    就够了

    程序员,开发者永远都是少数
    SekiBetu
        57
    SekiBetu  
       2022-12-04 15:36:11 +08:00
    重复占用问题是可以解决的,在未来 electron 大改版之后
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5514 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 03:37 · PVG 11:37 · LAX 19:37 · JFK 22:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.