V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Loxon
V2EX  ›  程序员

最近好多 GUI 之争,我来给 Electron 站一票,理性讨论

  •  2
     
  •   Loxon · 2024-01-05 10:27:29 +08:00 · 21458 次点击
    这是一个创建于 391 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近看到几篇类似的讨论: https://www.v2ex.com/t/1005711 https://www.v2ex.com/t/1005903

    正好我也面临类似的问题,合理讨论下,先说明下需求:

    1. Win+Mac+移动端 桌面端为主用户群体,移动端会简单一些
    2. 工具类产品,除了 GUI 层面的需求外,核心功能会用到原生 OS 的 API ,所以各端必然有小部分核心代码是不一样的
    3. 整体 App 属于中等 App ,所以我不严格追求包大小,在我看来桌面端 50M~200M 都属于用户能接受的中等 App 的范畴
    4. App 里绝大部分以界面交互为主,Webview 有但也有限,可能仅仅辅助使用;性能要求也不高;
    5. 不希望用户主动安装依赖(之前基于.Net 开发的 Win App 需要用户手动安装依赖的痛苦回忆...)

    基于以上需求,感觉 Electron 是最适合的,有没有人提供下不同的思路见解?

    138 条回复    2024-04-10 11:41:30 +08:00
    1  2  
    Perry
        101
    Perry  
       2024-01-06 01:52:23 +08:00 via iPhone
    @rekulas 又一个把程序员群体当作所以用户群体的人,美国这么多人用 Discord ,Slack ,Microsoft Teams ,照你这么说这三家公司不都得关掉这些产品?
    Perry
        102
    Perry  
       2024-01-06 01:55:54 +08:00 via iPhone
    我不知道说 electron 臃肿、卡是人云亦云会是啥? VSCode Slack Microsoft Teams Discord 也是 Electron 也没见所有人骂他卡,正常用户谁知道一个 app 是不是 Electron 写的,是不是你们知道了 electron 自动刻板印象觉得它臃肿、卡了?
    Perry
        103
    Perry  
       2024-01-06 02:04:41 +08:00
    https://www.electronjs.org/apps

    再补充一个,不知道什么时候 Electron 在国内这么不受待见了,北美产品用 Electron 不要太多。如果一个产品用 Electron 就代表它臃肿,卡,我不懂为什么这么多公司会用 Electron ?

    当初你们不是还把 Obsidian ,Notion 捧上天了的么?怎么没人用完这些产品说他卡,臃肿?
    fuermosi777
        104
    fuermosi777  
       2024-01-06 02:11:56 +08:00   ❤️ 1
    v2ex 啥时候添加一个投票功能。。。
    jqtmviyu
        105
    jqtmviyu  
       2024-01-06 03:41:46 +08:00
    electron 只是大多数优化得差而已.
    如果不卡, 是不是 electron 关系不大.

    我现在常用的 electerm qq obsidian 都是
    SeaTac
        106
    SeaTac  
       2024-01-06 05:29:20 +08:00 via iPhone
    @Perry
    我们公司用 slack
    我老婆用 teams
    体验很一般 只能说工作 im 能用就行
    唯一的特例是 vscode ,确实不错
    wazggcd
        107
    wazggcd  
       2024-01-06 06:56:43 +08:00 via Android
    @rekulas 你的观点是你想当然,普通应用改成套壳,是大势所趋,你可以不接受,但这就是趋势。
    vscode 的成功充分证明套壳流畅是没问题的,没见有谁说 vscode 不行,得用原生 ui 开发的。
    所以,接受现实,拥抱变化。
    holulu
        108
    holulu  
       2024-01-06 07:29:28 +08:00
    @bigtear Copy-on-Write 不是在原文件复制的时候才起作用吗?安装应用又不是从其他应用里拷文件,除非操作系统在拷文件之前算 hash 再比对。
    langhuishan
        109
    langhuishan  
       2024-01-06 08:16:24 +08:00
    @nowgoo 比如做的程序编译成 AAA.exe 运行之后就会在 C:\Users\用户名\AppData\Roaming 文件夹下生成一个 AAA.exe 的文件夹。里面 EBWebView
    yopv2
        110
    yopv2  
       2024-01-06 08:56:58 +08:00
    tauri + 1
    simo
        111
    simo  
       2024-01-06 09:20:27 +08:00
    讨论语言,框架这些,总觉得是多学点就行了。每种语言、框架、库都有适用范围,所以学的是限定条件和语言本身。
    GUI 应用,我的话,c/c++ go python flutter(dart) javascript 都会一点,现在一般这么选:
    小工具,go fyne ,pyside ;
    大一些的,c++ QT 、c#;
    移动端+PC 端 flutter ;
    快速开发,生命周期短的(不是很熟悉,并且安装程序都比较大),electron 。
    SiWXie
        112
    SiWXie  
       2024-01-06 09:30:59 +08:00 via iPhone
    pyqt
    sanzrolee
        113
    sanzrolee  
       2024-01-06 09:33:50 +08:00
    如果还得做移动端,那优先选 flutter ;如果桌面端和移动端功能没有高度重合,那么 electron 也是可以的,移动端就用 uniapp 写; Qt 则是得懂点 C++,对开发者的门槛相对较高,如果楼主懂,那自然 Qt 最好。
    sanzrolee
        114
    sanzrolee  
       2024-01-06 09:38:02 +08:00
    @Betsy QFluentWidgets ,需要付费¥ 238.88/年
    rekulas
        115
    rekulas  
       2024-01-06 09:47:49 +08:00
    @Perry 我说的很明确了 是普通用户,不是程序员群体


    @wazggcd 什么叫想当然?我和我周围的朋友,用 electron 就没一个觉得好用的,所有的!所有的人用 vscode 都会卡,还不是卡顿,是直接卡死,必须重启解决,我们 cpu 排名 140-300 之间,intel amd 都有
    nowgoo
        116
    nowgoo  
       2024-01-06 10:32:14 +08:00
    @langhuishan 貌似是 WebView2 组件必须要创建这么一个文件夹。
    kevinlq
        117
    kevinlq  
       2024-01-06 10:49:28 +08:00
    投 Qt 一票,其次也有一些开源的组件库,开发起来挺快的。

    比如这个 QML 开源库 QML FluentUI ,感兴趣可以看看: https://github.com/zhuzichu520/FluentUI

    抽空用它模仿了微信界面,代码也开源: https://github.com/kevinlq/KChatQML

    https://github.com/kevinlq/KChatQML/blob/master/images/chat2.png?raw=true
    vialon17
        118
    vialon17  
       2024-01-06 11:05:35 +08:00
    Qt 用户+1 ,但学起来真的挺难的。
    panjk0518
        119
    panjk0518  
       2024-01-06 11:26:27 +08:00
    桌面:看您的要求我支持 Tauri / Electron ,同时希望 Avalonia (“跨平台 WPF”,我很喜欢 .NET / C# 可惜 .NET 框架一般要单独安装 Runtime) / Qt 好好发展。
    移动:React Native / UniApp / Flutter
    个人建议桌面 / 移动端分开写,不要用 Flutter 之类的框架写桌面端,这些本来定位是移动端的框架,做出的界面对桌面用户很不友好,与系统极为割裂,尤其是工具类的产品,更需要界面简洁好用。
    FightPig
        120
    FightPig  
       2024-01-06 11:39:24 +08:00
    如果面向用户有小白的话,老实用 electron 吧,什么 tauri ,国内 win7 用户好多根本装不起来,因为有人还在用没更新 sp1 的 win7 ,如果面向是程序员等用户,那 tauri 啥的可以直接上
    acctv2
        121
    acctv2  
       2024-01-06 12:33:53 +08:00   ❤️ 3
    @rekulas 你这说了半天还是在小众群体里自嗨。

    你现在随便找一家跟互联网、软件开发完全无关的公司,或者机关单位,去问问你知道 electron 是什么吗?看看知道的有多少。这我还是给你筛选了一批高知群体呢。继续下沉,去菜市场上问,你看看有多少知道?更别说还性能对比了。

    我已经说了你这些都是数码圈小白,说白了就是喜欢捣鼓又半懂不懂的,你跟看不懂人话似得。
    acctv2
        122
    acctv2  
       2024-01-06 12:38:57 +08:00   ❤️ 1
    @Perry electron 唯一的硬缺陷就是打包体积大,其他的其实都不是硬缺陷。尤其是对 GUI 性能不敏感的应用,electron 非常合适。

    除了那些高度 UI 性能敏感的应用,例如高帧率数据绘图之类的需求,其他的如果体验特别很卡基本都是程序员能力不行,这些人去写 Qt 和 WPF 一样卡。

    v2 上说白了很多也都是半懂不懂的。
    jworg
        123
    jworg  
       2024-01-06 12:49:37 +08:00
    在我这 qt 远大于 electron ,原因我自己也想了的,非开发者用户大部分电脑内存都是 8G 甚至还有不少数量 4G 内存的。electron 就是不流畅,连 vscode 都不流畅,所以我给他们推 vscode 他们都觉得远远不如 notepad++ 好用。16G 32G 内存加固态硬盘运行 electron 当然流畅啊,可是大部分人有吗,脱离运行环境就在那那说我感觉我感觉有意义吗。
    Betsy
        124
    Betsy  
       2024-01-06 12:50:04 +08:00 via iPhone
    @sanzrolee 好贵,不太适合我这种只写写小工具的 😅
    roundgis
        125
    roundgis  
       2024-01-06 14:25:45 +08:00 via Android
    @mustwin maui 官方沒有支持 linux 吧?
    janus77
        126
    janus77  
       2024-01-06 14:33:09 +08:00
    额,我不支持 electron 的唯一理由是作为终端用户来说,electron 太动态化,容易搞小动作,我知道这不是框架的错但是我只能维护消费者利益,没办法。而且这个问题基本上是从根源产生的,无法解决。
    tushan
        127
    tushan  
       2024-01-06 20:58:05 +08:00
    我投 Electron 一票。跨平台的桌面开发框架,确实很方便。
    nightsky
        128
    nightsky  
       2024-01-06 21:18:10 +08:00
    我也投 electron 一票,做的好的 electron 应用一大堆,卡成屎的也一大堆
    jry
        129
    jry  
       2024-01-06 21:38:21 +08:00 via iPhone
    @maxxfire 微软已经集成了 webview2,就看 electron 啥时候迁移方案。
    oisadfo
        130
    oisadfo  
       2024-01-06 22:13:47 +08:00
    用 c++的大部分都用 QT 吧? 不是我们选择了 GUI 而是我们熟悉的语言限制了我们使用 GUI 的范围。
    DOLLOR
        131
    DOLLOR  
       2024-01-07 03:09:32 +08:00 via Android
    作为一个很少为桌面平台软件掏钱的用户,我不参与这个争执了。
    我觉得,哪个技术加班少,就选哪个。🐶
    mmdsun
        132
    mmdsun  
       2024-01-07 19:46:54 +08:00 via iPhone
    作为开发我投 Electron
    bigtear
        133
    bigtear  
       2024-01-08 08:41:24 +08:00
    @holulu 不是,cow 的意思是写时复制,不是复制的时候写...
    简单来说就是支持 cow 的文件系统内是不会存在两份相同的数据块的。

    一个文件你可以理解为指针,数据块通常是文件系统中的页( page )或块( block ),只有在需要修改数据时,才会进行写入数据块操作。
    nebulabox
        134
    nebulabox  
       2024-01-08 11:34:34 +08:00
    @mustwin MAUI 支持 Linux 了?你不会弄错了吧。记得微软是坚决拒绝支持 Linux 的。
    maemolee
        135
    maemolee  
       2024-01-08 14:22:00 +08:00
    @vvdsaa 保存为 app 是个好功能,但是这个功能在 safari 支持前,已经是 Chromium 系浏览器支持了很多年的特性了,没啥好前瞻的。
    mclxly
        136
    mclxly  
       2024-01-08 17:07:31 +08:00
    熟悉 golang 就 wails ;熟悉 rust 就 tauri 。
    obulks
        137
    obulks  
       308 天前
    作为前端我投 electron ,首先我需要程序是跨平台的,支持 windows 、linux 和 mac ,Windows 最低支持到 win7 ,liunx 需要支持 x86 、arm64 架构 cpu 的操作系统,包括国产系统和普通发行版,用户的运行环境完全不可信,依赖 webview 的框架我是绝对不考虑的,并且 webview 对 es 标准的支持情况也不一致,对于 web 前端开发,我相信大家都会希望用户的浏览器环境是最高版本的,能支持最新的特性,electron 能强制用户使用支持所有新特性的 chromium ,我是支持的。
    其次是对于界面的编写,web 前端生态和开发效率就是第一,大量开源的 ui 组件库是其他原生渲染的 gui 框架不具有的,想要实现一个定制化高一点的组件,比如带图标的菜单树组件,一个支持参数配置并带有预览功能的上传文件组件,对于 web 来说,是很容易实现和进行二次封装的,而其他框架都要花费时间精力去进行封装,做出来还不一定好看,老板也不会说给我一两周的时间先去学 qt ,然后我做的时候慢慢踩坑解决问题。
    我认为,做 gui 程序,一定是将所有依赖,都集成在整个程序中,用户的环境完全不可信,我是没心思指导不懂电脑的小白用户安装这个安装那个的,electron 缺点是有,但是它是最符合我这边需求的框架了,用户可不懂什么 webview 还是 cef 的,用户需要的是能用和好用,其次是好不好看,不要老是把这种追求极致的想法追加给用户,还有这个年代还执着于桌面端应用程序大小的,我实在无话可说。
    hkiJava
        138
    hkiJava  
       295 天前
    @kevinlq fluentui 相关的开发文档有吗
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   708 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 22:54 · PVG 06:54 · LAX 14:54 · JFK 17:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.