2

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

 8 months ago
source link: https://www.v2ex.com/t/1006050
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  程序员

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

  Loxon · 2 小时 9 分钟前 · 1865 次点击

最近看到几篇类似的讨论: 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 是最适合的,有没有人提供下不同的思路见解?

45 条回复    2024-01-05 12:31:26 +08:00
shuax

shuax      2 小时 7 分钟前   ❤️ 8

我投 flutter 一票
xausky

xausky      2 小时 5 分钟前

https://webui.me/ 这个方案挺好的,唯一的问题是浏览器窗口归属浏览器应用,而不是自己这个应用
sunjiayao

sunjiayao      2 小时 4 分钟前

flutter 是不是也能开发桌面应用
debuggerx

debuggerx      2 小时 4 分钟前

我投 flutter 一票
Loxon

Loxon      2 小时 2 分钟前

@shuax @debuggerx 如果基于我上面说的需求下,能请教下 Flutter 的优势吗?确实怕再踩坑
debuggerx

debuggerx      1 小时 57 分钟前

@Loxon 优缺点和对比已经说烂了,该不认同的还是不会认同,只会一直争下去,实在懒得说了……所以出来投一票表个立场而已。
ramoudev

ramoudev      1 小时 55 分钟前

Electron 开发,多窗口多进程交互麻烦的要死
nielinjie

nielinjie      1 小时 54 分钟前

kmp ,有喜欢的没?
clue

clue      1 小时 54 分钟前   ❤️ 3

我认为未来是 web 的, 大统一 UI 标准, 迄今为止最全面用的人最多的

举个类似的例子, 以前在 nodejs 兴起的时候, 因为 js 程序员的受众巨大, 导致能被 nodejs 重写的插件几乎都被重写了
而现在也有这个趋势, 比如开发代码连接蓝牙比较繁琐, 在 nodejs 下使用的是 noble 这个库, 而 w3c bluetooth api 标准发布后, 没多久社区就有人将它包装为标准 api , 使得 nodejs 开发可以与 web 对齐
sunjiayao

sunjiayao      1 小时 53 分钟前

@debuggerx 比如说?有哪些帖子或者文章比对过?
thinkm

thinkm      1 小时 52 分钟前

flutter 多线程支持太拉了,要不然我也选 flutter
qinjiang

qinjiang      1 小时 46 分钟前

支持 electron
blankmiss

blankmiss      1 小时 44 分钟前

不支持 electron ,不想要多个浏览器 只要一个就够了
roundgis

roundgis      1 小时 43 分钟前 via Android

@nielinjie 打算用
oldManNewThought

oldManNewThought      1 小时 38 分钟前 via Android

桌面端,我选 tauri
ysc3839

ysc3839      1 小时 36 分钟前 via Android

我也推荐 Electron ,但是有的人就是纠结文件大小
yolee599

yolee599      1 小时 32 分钟前   ❤️ 1

我投 Qt 一票,wxWidgets 一票
Knights

Knights      1 小时 27 分钟前

支持 electron
mxT52CRuqR6o5

mxT52CRuqR6o5      1 小时 24 分钟前

我也是看好 web 类的方案,但不知道会不会有比 electron 更优秀的框架
Mogugugugu

Mogugugugu      1 小时 23 分钟前   ❤️ 1

我选 electron ,因为技术栈匹配度高,但是我投 Compose Multiplatform 一票,没什么,单纯希望他们打起来。
Yjhenan

Yjhenan      1 小时 22 分钟前

avalonia 用 aot 编译,不用再装 .net 了吧?其 hello world 的 aot 产物用压缩包压缩下,也只有 10 兆大小
wyl986

wyl986      1 小时 16 分钟前

electron 有一个好处:就是把一些 electron 特有的 API (主要是调用硬件的)直接绑在 window 上,然后用 electron 套一个网页;更新的话直接更新网页,可以避免更新整个 electron ,而且还可以无感强制更新; electron 打包之后再小也有 50m+,用户量大了 cdn 流量也遭不住
icyalala

icyalala      1 小时 12 分钟前

作为开发来说,我也推荐 Electron ,甚至 Flutter 我觉得也是可选的。
但从用户角度出发,我只想要原生的 App 。
davidjqq19

davidjqq19      1 小时 4 分钟前

Electron 就是安装包大了点,写个 Hello World 都得几十 M ,其他没啥毛病。
sheeta

sheeta      1 小时 2 分钟前

作为用户我不支持 electron ,我可不想在我的电脑上塞 N 多个 Chrome 。
nno

nno      58 分钟前

我投 egui
adoal

adoal      55 分钟前

作为用户我只想用原生 app……但是想到我很少为优秀的原生 app 付钱,那么,作为雪花,我不是无辜的
leaflxh

leaflxh      43 分钟前

我觉得 electron 能像 Java JRE 一样,出几个稳定版的浏览器包作为运行时就好

这下就像安卓的"快应用了"
leaflxh

leaflxh      40 分钟前

@leaflxh

同时操作系统预装,类似于安卓的 webview
loginv2

loginv2      33 分钟前

我推荐 core + webui 。这样 java 也好 python 也好,或者其他什么语言都是打包一个环境 然后该干的活后台干,前台交给浏览器。如果需要 UI 实现某些特性,单独用特定平台的 webview 技术来做维护
Worldispow

Worldispow      33 分钟前 via Android   ❤️ 2

从用户角度来看,electron 就是一坨屎。

v2er 也挺有意思的,app 占空间大就狂喷,轮到自己成为开发者时又不在乎大小了。
lstz

lstz      29 分钟前 via iPhone

electron 太过笨重,实际上绝大多数应用都只需要一个单窗口,所以我更推荐 PWA 或者轻量级 web 桌面框架

至于用户体验,我认为除了真正程序上的 benchmark ,更多与用户交互也是强相关的。

最近在做一个开源项目,https://github.com/work7z/LafTools ,计划也是用轻量级 web 实现,曾经无数次想用 native UI ,但框架少库少,让我实在不敢赌
pursuer

pursuer      27 分钟前

现在 Electron 支持移动端了吗?以前我记得是不支持的
Bingchunmoli

Bingchunmoli      26 分钟前 via Android

作为用户反感 Electron.
elevioux

elevioux      21 分钟前

在写 python 脚本调 chatgpt 接口的时候,想做一个简单的对话窗口。

看了一下 pyqt,tk 文档,看着烦。

直接用 pyqt 的 webview ,再写一个 jsbridge 让 浏览器 js 和 python 能够通信,就这么用着了。
superchijinpeng

superchijinpeng      20 分钟前

我投 Tauri 一票
jones2000

jones2000      18 分钟前

不都是套壳浏览器吗?
zed1018

zed1018      13 分钟前

我对 flutter 本身没有什么负面看法,但是我觉得 Dart 是真的丑,我接受不了
xarthur

xarthur      12 分钟前 via iPhone

写一个跨平台的 GUI 库需要的工作量太大了,所以要不用浏览器,要不用放弃跨平台吧。
buf1024

buf1024      10 分钟前

这个问题没有最优解,只有适合和不适合自己或公司的技术栈,因为以上所以的技术栈都能完成对应需求,当然也有自己的优点和坑。对于 flutter 来说,桌面端的支持不并是很完善,比如多窗口等等都没有完善的支持,很多功能都是第三方插件支持的,而且,官方并将桌面的的优先级放到比较低的位置。所以如果采用 flutter 开发桌面端,必定会踩很多坑,不过这都不是什么大问题,一般都有解决方案,如果没有解决方案,自己也可以通过插件完善。

自己之前尝试用 flutter 写写桌面端,感觉还行,参考: https://github.com/buf1024/hiqradio
liuw666

liuw666      6 分钟前 via iPhone

开发推荐 electron 。虽然我正在写 electron 客户端,但是电脑上 electron 的客户端能不装我就不装
ChrisFreeMan

ChrisFreeMan      5 分钟前

我差一点就上了 flutter 的船了,直到它的开发工具和 Chrome 绑定。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK