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

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

  •  2
     
  •   Loxon · 358 天前 · 20801 次点击
    这是一个创建于 358 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近看到几篇类似的讨论: 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  
       357 天前 via iPhone
    @rekulas 又一个把程序员群体当作所以用户群体的人,美国这么多人用 Discord ,Slack ,Microsoft Teams ,照你这么说这三家公司不都得关掉这些产品?
    Perry
        102
    Perry  
       357 天前 via iPhone
    我不知道说 electron 臃肿、卡是人云亦云会是啥? VSCode Slack Microsoft Teams Discord 也是 Electron 也没见所有人骂他卡,正常用户谁知道一个 app 是不是 Electron 写的,是不是你们知道了 electron 自动刻板印象觉得它臃肿、卡了?
    Perry
        103
    Perry  
       357 天前
    https://www.electronjs.org/apps

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

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

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


    @wazggcd 什么叫想当然?我和我周围的朋友,用 electron 就没一个觉得好用的,所有的!所有的人用 vscode 都会卡,还不是卡顿,是直接卡死,必须重启解决,我们 cpu 排名 140-300 之间,intel amd 都有
    nowgoo
        116
    nowgoo  
       357 天前
    @langhuishan 貌似是 WebView2 组件必须要创建这么一个文件夹。
    kevinlq
        117
    kevinlq  
       357 天前
    投 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  
       357 天前
    Qt 用户+1 ,但学起来真的挺难的。
    panjk0518
        119
    panjk0518  
       357 天前
    桌面:看您的要求我支持 Tauri / Electron ,同时希望 Avalonia (“跨平台 WPF”,我很喜欢 .NET / C# 可惜 .NET 框架一般要单独安装 Runtime) / Qt 好好发展。
    移动:React Native / UniApp / Flutter
    个人建议桌面 / 移动端分开写,不要用 Flutter 之类的框架写桌面端,这些本来定位是移动端的框架,做出的界面对桌面用户很不友好,与系统极为割裂,尤其是工具类的产品,更需要界面简洁好用。
    FightPig
        120
    FightPig  
       357 天前
    如果面向用户有小白的话,老实用 electron 吧,什么 tauri ,国内 win7 用户好多根本装不起来,因为有人还在用没更新 sp1 的 win7 ,如果面向是程序员等用户,那 tauri 啥的可以直接上
    acctv2
        121
    acctv2  
       357 天前   ❤️ 3
    @rekulas 你这说了半天还是在小众群体里自嗨。

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

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

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

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

    一个文件你可以理解为指针,数据块通常是文件系统中的页( page )或块( block ),只有在需要修改数据时,才会进行写入数据块操作。
    nebulabox
        134
    nebulabox  
       355 天前
    @mustwin MAUI 支持 Linux 了?你不会弄错了吧。记得微软是坚决拒绝支持 Linux 的。
    maemolee
        135
    maemolee  
       355 天前
    @vvdsaa 保存为 app 是个好功能,但是这个功能在 safari 支持前,已经是 Chromium 系浏览器支持了很多年的特性了,没啥好前瞻的。
    mclxly
        136
    mclxly  
       355 天前
    熟悉 golang 就 wails ;熟悉 rust 就 tauri 。
    obulks
        137
    obulks  
       275 天前
    作为前端我投 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  
       262 天前
    @kevinlq fluentui 相关的开发文档有吗
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2744 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:28 · PVG 22:28 · LAX 06:28 · JFK 09:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.