最近看到几篇类似的讨论: https://www.v2ex.com/t/1005711 https://www.v2ex.com/t/1005903
正好我也面临类似的问题,合理讨论下,先说明下需求:
基于以上需求,感觉 Electron 是最适合的,有没有人提供下不同的思路见解?
|  |      1shuax      2024-01-05 10:29:46 +08:00  29 我投 flutter 一票 | 
|  |      2irrigate2554      2024-01-05 10:31:45 +08:00 https://webui.me/ 这个方案挺好的,唯一的问题是浏览器窗口归属浏览器应用,而不是自己这个应用 | 
|      3luman      2024-01-05 10:31:50 +08:00 flutter 是不是也能开发桌面应用 | 
|  |      4debuggerx      2024-01-05 10:32:15 +08:00  2 我投 flutter 一票 | 
|  |      6debuggerx      2024-01-05 10:39:30 +08:00 @Loxon 优缺点和对比已经说烂了,该不认同的还是不会认同,只会一直争下去,实在懒得说了……所以出来投一票表个立场而已。 | 
|  |      7ramoudev      2024-01-05 10:41:33 +08:00 Electron 开发,多窗口多进程交互麻烦的要死 | 
|  |      8nielinjie      2024-01-05 10:42:18 +08:00  1 kmp ,有喜欢的没? | 
|      9clue      2024-01-05 10:42:36 +08:00  5 我认为未来是 web 的, 大统一 UI 标准, 迄今为止最全面用的人最多的 举个类似的例子, 以前在 nodejs 兴起的时候, 因为 js 程序员的受众巨大, 导致能被 nodejs 重写的插件几乎都被重写了 而现在也有这个趋势, 比如开发代码连接蓝牙比较繁琐, 在 nodejs 下使用的是 noble 这个库, 而 w3c bluetooth api 标准发布后, 没多久社区就有人将它包装为标准 api , 使得 nodejs 开发可以与 web 对齐 | 
|  |      11thinkm      2024-01-05 10:43:58 +08:00 flutter 多线程支持太拉了,要不然我也选 flutter | 
|      12qinjiang      2024-01-05 10:49:49 +08:00 支持 electron | 
|  |      13blankmiss      2024-01-05 10:52:01 +08:00  1 不支持 electron ,不想要多个浏览器 只要一个就够了 | 
|  |      15oldManNewThought      2024-01-05 10:58:44 +08:00 via Android 桌面端,我选 tauri | 
|  |      16ysc3839      2024-01-05 11:00:44 +08:00 via Android  2 我也推荐 Electron ,但是有的人就是纠结文件大小 | 
|  |      17yolee599      2024-01-05 11:04:21 +08:00  4 我投 Qt 一票,wxWidgets 一票 | 
|  |      18Knights      2024-01-05 11:08:58 +08:00 支持 electron | 
|      19mxT52CRuqR6o5      2024-01-05 11:12:10 +08:00 我也是看好 web 类的方案,但不知道会不会有比 electron 更优秀的框架 | 
|  |      20Mogugugugu      2024-01-05 11:13:14 +08:00  2 我选 electron ,因为技术栈匹配度高,但是我投 Compose Multiplatform 一票,没什么,单纯希望他们打起来。 | 
|  |      21Yjhenan      2024-01-05 11:14:42 +08:00  2 avalonia 用 aot 编译,不用再装 .net 了吧?其 hello world 的 aot 产物用压缩包压缩下,也只有 10 兆大小 | 
|      22wyl986      2024-01-05 11:20:28 +08:00  2 electron 有一个好处:就是把一些 electron 特有的 API (主要是调用硬件的)直接绑在 window 上,然后用 electron 套一个网页;更新的话直接更新网页,可以避免更新整个 electron ,而且还可以无感强制更新; electron 打包之后再小也有 50m+,用户量大了 cdn 流量也遭不住 | 
|  |      23icyalala      2024-01-05 11:24:10 +08:00  7 作为开发来说,我也推荐 Electron ,甚至 Flutter 我觉得也是可选的。 但从用户角度出发,我只想要原生的 App 。 | 
|  |      24davidjqq19      2024-01-05 11:32:10 +08:00 Electron 就是安装包大了点,写个 Hello World 都得几十 M ,其他没啥毛病。 | 
|  |      25sheeta      2024-01-05 11:34:16 +08:00  2 作为用户我不支持 electron ,我可不想在我的电脑上塞 N 多个 Chrome 。 | 
|  |      26debuggerx      2024-01-05 11:38:09 +08:00  1 | 
|      27nno      2024-01-05 11:38:29 +08:00 我投 egui | 
|  |      28adoal      2024-01-05 11:41:42 +08:00  2 作为用户我只想用原生 app……但是想到我很少为优秀的原生 app 付钱,那么,作为雪花,我不是无辜的 | 
|  |      29leaflxh      2024-01-05 11:53:19 +08:00 我觉得 electron 能像 Java JRE 一样,出几个稳定版的浏览器包作为运行时就好 这下就像安卓的"快应用了" | 
|  |      31dbskcnc      2024-01-05 11:59:18 +08:00  1 | 
|  |      32loginv2      2024-01-05 12:03:08 +08:00 我推荐 core + webui 。这样 java 也好 python 也好,或者其他什么语言都是打包一个环境 然后该干的活后台干,前台交给浏览器。如果需要 UI 实现某些特性,单独用特定平台的 webview 技术来做维护 | 
|      33Worldispow      2024-01-05 12:03:28 +08:00 via Android  20 从用户角度来看,electron 就是一坨屎。 v2er 也挺有意思的,app 占空间大就狂喷,轮到自己成为开发者时又不在乎大小了。 | 
|  |      34lstz      2024-01-05 12:07:47 +08:00 via iPhone electron 太过笨重,实际上绝大多数应用都只需要一个单窗口,所以我更推荐 PWA 或者轻量级 web 桌面框架 至于用户体验,我认为除了真正程序上的 benchmark ,更多与用户交互也是强相关的。 最近在做一个开源项目,https://github.com/work7z/LafTools ,计划也是用轻量级 web 实现,曾经无数次想用 native UI ,但框架少库少,让我实在不敢赌 | 
|  |      35pursuer      2024-01-05 12:09:24 +08:00 现在 Electron 支持移动端了吗?以前我记得是不支持的 | 
|      36Bingchunmoli      2024-01-05 12:10:46 +08:00 via Android  1 作为用户反感 Electron. | 
|  |      37elevioux      2024-01-05 12:14:50 +08:00 在写 python 脚本调 chatgpt 接口的时候,想做一个简单的对话窗口。 看了一下 pyqt,tk 文档,看着烦。 直接用 pyqt 的 webview ,再写一个 jsbridge 让 浏览器 js 和 python 能够通信,就这么用着了。 | 
|  |      38superchijinpeng      2024-01-05 12:16:22 +08:00 我投 Tauri 一票 | 
|      39jones2000      2024-01-05 12:17:58 +08:00 不都是套壳浏览器吗? | 
|  |      40hanxiV2EX      2024-01-05 12:21:15 +08:00 via Android | 
|      41zed1018      2024-01-05 12:22:55 +08:00 我对 flutter 本身没有什么负面看法,但是我觉得 Dart 是真的丑,我接受不了 | 
|  |      42xarthur      2024-01-05 12:24:16 +08:00 via iPhone 写一个跨平台的 GUI 库需要的工作量太大了,所以要不用浏览器,要不用放弃跨平台吧。 | 
|  |      43buf1024      2024-01-05 12:26:46 +08:00 这个问题没有最优解,只有适合和不适合自己或公司的技术栈,因为以上所以的技术栈都能完成对应需求,当然也有自己的优点和坑。对于 flutter 来说,桌面端的支持不并是很完善,比如多窗口等等都没有完善的支持,很多功能都是第三方插件支持的,而且,官方并将桌面的的优先级放到比较低的位置。所以如果采用 flutter 开发桌面端,必定会踩很多坑,不过这都不是什么大问题,一般都有解决方案,如果没有解决方案,自己也可以通过插件完善。 自己之前尝试用 flutter 写写桌面端,感觉还行,参考: https://github.com/buf1024/hiqradio | 
|      44nowtg      2024-01-05 12:29:49 +08:00 via iPhone 开发推荐 electron 。虽然我正在写 electron 客户端,但是电脑上 electron 的客户端能不装我就不装 | 
|  |      45ChrisFreeMan      2024-01-05 12:31:26 +08:00 我差一点就上了 flutter 的船了,直到它的开发工具和 Chrome 绑定。 | 
|      46maxxfire      2024-01-05 12:51:30 +08:00 相比臃肿和 dart 而言,我选择臃肿,毕竟以后臃肿有可能会被集成至操作系统 | 
|  |      47R4rvZ6agNVWr56V0      2024-01-05 13:45:03 +08:00 我用 webview 自己封装 | 
|  |      48SmartTom      2024-01-05 13:45:24 +08:00  1 Qt ,看了半天好像没人用 | 
|  |      49murmur      2024-01-05 13:48:07 +08:00  2 除了苹果用户还有人介意 electron 的尺寸么,tb 级硬盘不是想装几个 chrome 装几个,32g 内存愿意开几个就开几个 | 
|  |      51remember5      2024-01-05 13:57:30 +08:00 作为开发,我选 Electron ,作为用户,Electron 的应用我尽量不装 | 
|  |      52duanxianze      2024-01-05 14:03:47 +08:00  9 这帖子很多人不要自顾自的代表用户,市场已经证明了大多数用户并不在乎多出那几百兆的空间,实际上的问题是很多人 Electron 用的太差了,导致卡,用 qt 之类的门槛高,排除了很多技术不行的程序员。 就我个人来说,并不在用啥技术,老板给钱就行 | 
|  |      53duanxianze      2024-01-05 14:03:55 +08:00 这帖子很多人不要自顾自的代表用户,市场已经证明了大多数用户并不在乎多出那几百兆的空间,实际上的问题是很多人 Electron 用的太差了,导致卡,用 qt 之类的门槛高,排除了很多技术不行的程序员。 就我个人来说,并不在用意啥技术,老板给钱就行 | 
|      54bigtear      2024-01-05 14:14:26 +08:00 不可否认 electron 等前端技术写客户端是一个大趋势, 好多人不喜欢 electron 的原罪就是一个软件带一个 chromium 内核在硬盘上。 很多人认为会有文件重复,但如果系统支持写时复制( Copy-on-Write ),相同的文件在底层只会保存一份。 虽然可能内核版本不同,不同文件也有不少,但多少会让现状有所改善。 MacOS 的 APFS 支持 cow ,反观 Windows 的 NTFS 不支持所以会占用大量存储空间, 但 Mac 和 PC 的硬盘价格也差距悬殊... DISM++ 有个硬链接合并的功能可以合并重复文件,但它主要是针对系统做优化的。 还是希望 Windows 能早日原生支持那些高级文件系统吧。 (要是 Windows 12 能用上我就立马从 Windows 10 钉子户升级😶) 现在好像只有一个社区开源的驱动 [WinBtrfs]( https://github.com/maharmstone/btrfs) 让 Windows 能用上支持 cow 和透明压缩的 btrfs 文件系统,但目前对系统盘使用 btrfs 文件系统的支持也不是很完善。 | 
|  |      55Norths      2024-01-05 14:19:37 +08:00 wails ,写了好几个工具了 | 
|      56lwlizhe      2024-01-05 14:26:49 +08:00 话说 QT 为啥没人提啊,我们给桌面端推 Flutter ,结果被 QT 打败了……结论上是 flutter 在桌面端还是有几个挺致命的问题的,QT 大家都不选的原因是啥? | 
|  |      57huangliu      2024-01-05 14:26:49 +08:00 我近半年用得比较多的是 wails ,刚好最近写了篇关于基于 webview 的 app 框架的一些个人观点。打算过两天发 v 站上给大家多一个参考 | 
|      58renmu      2024-01-05 14:27:34 +08:00 via Android 没有我 electron ,那些 Linux 能有跨平台应用(狗头 | 
|  |      59ggvoking      2024-01-05 14:34:35 +08:00 作为用户,我很讨厌 electron ,能有其他非 electron 替代品的 app 都会优先考虑。我自己平时做些工具就 Avalonton 和 Qt 。.net 是可以不需要用户安装环境的,就是可执行文件大些,但是远比 electron 更小更优。 | 
|  |      61debuggerx      2024-01-05 14:35:59 +08:00 [ [译] macOS 上 Flutter Desktop 与 Electron 的性能对比]( https://juejin.cn/post/7018450473292136456) 虽然比较老的测试了,但是 Electron 对比 flutter 的资源占用差距可能比一些人以为的还要大。 | 
|  |      62wjd2002      2024-01-05 14:41:19 +08:00 我的 PC 端 ui 开发推荐列表: 1 、老电脑,配置低,推荐:Delphi 、Qt 2 、轻量级应用,比如:数据编辑、Oa 应用等,推荐:C#、Qt 、electron (不熟,应该算 web 类的吧) 3 、偏底层控制类应用,推荐:Qt 最后,windows 平台推荐 C#,跨平台应用推荐 Qt (软硬通吃,横跨 windows 、linux 、mac 、android 、ios ,c++底座)客户端开发基本全包了。 | 
|  |      63wjd2002      2024-01-05 14:47:44 +08:00 在 windows 平台下使用.Net 开发软件还是比较舒服的,打包后已经把运行时包都含进去了,比较都是微软自己的东西,兼容性基本不是问题,无论 C#/VB.NET/VC++都行。 | 
|      64Phishion      2024-01-05 14:48:15 +08:00 用 Electron 写的 Postman 性能跟渣一样,又慢又费内存又占空间,对比 Paw 秒开高下立判,mac 上的 Steam 也非常烂,一个游戏启动器就能占用内存 1.5G 除了给开发者省事一无是处的东西。 | 
|  |      65debuggerx      2024-01-05 14:49:36 +08:00  1 @lwlizhe QT 难啊,C++对比 ts\dart 难了多少,开发者数量也少至少一个量级吧? PyQt 倒是简单了,但是运行效率到打包产物尺寸,跟 Electron 差不多了。 再来 QtWidgets 开发效率低,QtQuick 推广差资料少,Qt 项目打包部署解决依赖问题也比 Electron 和 flutter 这些麻烦,所以很多 Qt 项目适合定制系统和设备上运行,真想跨平台还得多花些精力。 | 
|  |      66wjd2002      2024-01-05 14:50:32 +08:00 | 
|  |      67PTLin      2024-01-05 15:01:42 +08:00 web 太成熟了,不选择 eletron 的原因可能是不喜欢糊 web 那套东西,喜欢更现代“gui”的开发体验 | 
|      68thomas15425      2024-01-05 15:07:28 +08:00 Qt + 1 | 
|  |      69mgrddsj      2024-01-05 15:09:26 +08:00 via Android @bigtear #54 Windows 其实支持一个新的文件系统,叫 ReFS ,它也支持 CoW 的。不过它好像只有在 Pro 和 Server 版本的 Windows 才能用,而且一直没怎么推广,并不知道是什么原因。不过你有兴趣或许可以试试。 但我不认为文件系统级的 CoW 能解决多份 Electron 内核存在硬盘上的问题,毕竟每个版本的差异还是挺大的,以及这需要文件系统实时或定期 dedup 才行,毕竟这些文件不是复制的。 ---------- 我作为用户倒不太在意 Electron 的硬盘占用问题,只是觉得它的内存占用率有点令人难受,以及讨厌写得差的 Electron 应用的迟钝、笨重感(特别是 Microsoft Teams )。 开发方面,我正在学习 Qt ,并且也投它一票,它大概是目前各方面都比较平衡的一个选项了。不过未来我会期待 Compose Multiplatform. | 
|      70tinybug      2024-01-05 15:11:13 +08:00 此问题无解,我投大家自己熟悉的 | 
|      71zhch602      2024-01-05 15:16:41 +08:00 @Worldispow 这不是很正常的么,屁股决定脑袋,难道你是个圣人天天为别人着想 | 
|      72Worldispow      2024-01-05 15:20:25 +08:00 via Android @zhch602 不好意思,我不是开发者,我是用户。 | 
|      73stinkytofu      2024-01-05 15:24:28 +08:00 当你们还在争论的时候, 我已经用 javafx ( openjfx ) 交付客户端挣到钱了。推荐熟悉 java 的人用。 | 
|  |      74EngAPI      2024-01-05 15:49:43 +08:00 因为没类似软件用,我面向 chatgpt 写了个很简单的 lazarus 程序,找到了当年 delphi 的感觉,据说这货还能在 android 上用. | 
|  |      759dP06m83vIV00l72      2024-01-05 16:00:40 +08:00 GLib/GTK + Vala(C# 原生版)写跨平台应用挺好的呀 袋鼠数据库工具就是用 GLib/GTK + Vala 写出来的,它已经是一个和 GIMP / Inkscape 比肩的一线大项目了,欢迎各位考察这个技术栈。 | 
|  |      769dP06m83vIV00l72      2024-01-05 16:04:20 +08:00 https://www.datatable.online/zh/blog/001-why-choose-vala.html | 
|  |      77miaomiao888      2024-01-05 16:07:19 +08:00 卖菜的不吃自家菜 我怀疑你们有些开发者 面向浏览器编程的软件 自己都不会用。 | 
|      79langhuishan      2024-01-05 16:43:49 +08:00 @Norths wails 每个应用会在 c 盘生成一个程序名.exe 的文件夹搞的和病毒似的,这个有解决方法吗? | 
|  |      80rekulas      2024-01-05 16:44:29 +08:00  1 相反我投一个反票,electron 大大降低了产品的成功概率,因为现在的小白用户都学精了,会尽量避免选择 e 系全家桶 作为一个 electron 用户,有些软件只有 electron 版本,不得不捏着鼻子用,包括 joplin 钉钉 vscode 等,除了这些必需软件,我不会安装任何 electron 开发的东西,因为 electron 到目前为止都存在卡死问题,没有任何一个团队能优化该问题 所以在我看来 如果你用其他方案开发,可能只是节奏慢点,但用 electron 开发,基本就定了死刑了 | 
|  |      81cheneydog      2024-01-05 17:10:09 +08:00 我支持 Electron | 
|      82wangxiang      2024-01-05 17:15:43 +08:00 开发我选 electron ,使用我选原生。 | 
|  |      83nowgoo      2024-01-05 18:02:42 +08:00 @langhuishan 我咋没遇到这个问题,展开讲讲? | 
|  |      84winson030      2024-01-05 18:07:58 +08:00 请教一个问题。 vscode 优化的这么好,调教过的 electron 代码有没有可能贡献到 electron 上面? 这样大家都能享受丝滑的 electron 了。 | 
|  |      86rekulas      2024-01-05 18:45:02 +08:00 @acctv2 现在是 2024 年 不是 2014 年 举个例子,某笔记软件更新为 electron 之后性能严重下滑,网上也有用户询问为什么突然变卡了,但这只是冰山一角,如果你有幸加入过他们的用户群,就会发现早有用户总结出了变卡的版本号,变卡的原因( electron ),这些人都不是专业开发者,但他们已经开始注意并分析这个问题了(说实话我刚看到的时候也很惊讶,小白用户居然也知道 electron 和原生的区别了) 这些信息在老用户中间不断飞速传播,以至于不少老用户拒绝使用新版本-过了 2 3 年了还在坚守老版本 如果开发者对“小白”的固有印象再不升级,迟早会被淘汰 | 
|  |      88Maboroshii      2024-01-05 19:16:24 +08:00 Linux 用户支持 electron ,但是 chrome 上游早点支持 wayland 输入法... | 
|      89whileFalse      2024-01-05 19:29:51 +08:00 via Android QT 的主要优势在于过滤了傻逼。 大牛用 QT 搞得好,用 electron 搞得又快又好。 不过话说回来,electron 的主要问题不是太占内存么,有事没事开 tm 一堆渲染进程。 | 
|  |      91onice      2024-01-05 19:38:09 +08:00  1 即使是你用 electron 开发,但大多数普通用户根本不会知道你用什么开发。 大多数时候,GUI 并不会要求性能。所以,我个人来说是支持 electron 的。 | 
|  |      92Betsy      2024-01-05 19:39:13 +08:00 via iPhone 借楼问下,QT 有好用的 UI 库吗?自己不太会写 QSS (搞出来的太丑了) | 
|  |      94KleinP      2024-01-05 20:40:37 +08:00 建议 v 站搞个投票功能 | 
|  |      95liuliuliuliu PRO 不得不说,v 站用户好多见识少的,这么多楼了竟然没有推荐.NET 的,现在的.NET 的 GUI ,可以跨平台,并且 aot 编译,无需运行时,启动速度快,占用内存少 | 
|      96mustwin      2024-01-05 21:34:09 +08:00 .net MAUI 呀,不仅支持 Windows Linux macOS ,还支持 android 和 iOS 。 这是我用 MAUI 开发的项目,AI 超元域: https://github.com/win4r/AISuperDomain | 
|      97ShuWei      2024-01-06 00:09:05 +08:00 web 在构建页面这一块,又快又好,所以不复杂的需求,我会选择 web ,使用 Tauri 打包一下。如果是对渲染性能、数据处理性能、系统底层交互、资源占用敏感的场景,就还是选择各平台个性化的方案了,但是往往开发速度就不像 web 页面那般快了 | 
|  |      98jsq2627      2024-01-06 01:21:00 +08:00 几十年来,web 一直都不是最优秀的 GUI 技术,但却是生命力最强的。 | 
|  |      99IvanLi127      2024-01-06 01:41:56 +08:00 via Android 我会从 Tauri 和 Electron 之间二选一。简单 UI 选 Tauri 减少应用体积,复杂 UI 选 Electron 避免花时间在跨 Webview 。 | 
|  |      100Perry      2024-01-06 01:48:29 +08:00 via iPhone Slack, Discord, Microsoft Teams, 1Password 都是 Electron ,是我 React ecosystem 用惯了也是首选 Electron 。 |