Flutter 3 加入了对 Linux 桌面应用程序的支持: https://medium.com/flutter/introducing-flutter-3-5eb69151622f
NVIDIA 也开源了 Linux GPU 内核模块: https://github.com/NVIDIA/open-gpu-kernel-modules
1
codefever 2022-05-12 11:18:38 +08:00
不开源谁用...
|
2
crayygy 2022-05-12 11:22:02 +08:00 6
跟有没有技术上的 Support 关系不大,跟有没有大量的市场有关,技术再先进,没有用户用,投入始终都不会很大的。
参考当年的 1% 事件。 |
3
Buges 2022-05-12 11:23:05 +08:00 via Android 5
其实 electron 才是 Linux 桌面的春天。所有商业应用支持 Linux 的十有八九都是 electron ,反过来说凡是不是 electron 写的应用极大概率不支持 Linux 。
|
4
s127 2022-05-12 11:23:25 +08:00
不会,除了必要部门,其他承担不了迁移的成本。
|
5
gargar 2022-05-12 11:26:21 +08:00
现在都是移动端优先,桌面本来就在缩水,linux 桌面嘛。。。
不过多一个选择是好事 |
7
darksword21 2022-05-12 12:34:32 +08:00 via iPhone 2
@Buges 凡事 electron 的我能不用就不用
|
9
learningman 2022-05-12 12:40:25 +08:00 via Android
@yanwen wps 这类东西用网页写要死人的,google docs 都打算自己写渲染器画到 canvas 了
|
10
secondwtq 2022-05-12 12:48:17 +08:00 2
是的,每年都可以庆祝"the year of Linux desktop"
|
11
encro 2022-05-12 12:52:54 +08:00
@darksword21
不妨先看看下面这些都在是类 electron 技术的: vscode 网易云音乐桌面 钉钉桌面版 曾经的微信桌面版(现在已改为 Qt ) 当前主流跨平台桌面应用技术也就那么几样,electron 已经是事实第一了。 electron nw/cef/webview/webview2 qt flutter Avalonia javafx/swing/swt winform+wpf+wine? winui3 |
12
dongcidaci 2022-05-12 12:57:07 +08:00 via Android
放弃吧,GUI 天生不适合用 c 写
|
13
nicevar 2022-05-12 12:59:07 +08:00
@encro 我不知道什么地方的数据 Electron 是第一,你要是说用户数,Qt 的游戏端太多了,用户量肯定吊打 Electron ,功能稍微复杂的软件我就没见过几个用 Electron 的,什么时候 VirtualBox/GuitarPro/Mathematica/IDA 这类软件都用 Electron 来开发替换了,我就信你了。
|
14
imycc 2022-05-12 13:04:57 +08:00
主流平台的跨平台开发也是日常看他们扯来扯去的。。有帮助,但不起决定性作用。想直接在桌面软件的路上赶超其他两家是不太行的。
正常思路应该是 某一类搭载 linux 桌面环境的 设备崛起,带动市场对此类平台的投入,进而更多的研发力量投入到其中,促进整个软件生态的发展。 emmm ,好像是安卓的路子( |
15
XiLingHost 2022-05-12 13:13:08 +08:00
跨平台的 ui 里用户最多的会不会是 unity 呢
@nicevar |
16
rekulas 2022-05-12 13:13:23 +08:00 4
|
17
darksword21 2022-05-12 13:24:42 +08:00 via iPhone
@encro 是,你说这些我电脑上都没有
|
18
Ggxw8 2022-05-12 13:28:38 +08:00 1
可能是因为 Steam Deck 这样的产品吧 OS 是基于 Arch 的 Soc 是 AMD 的 可能英伟达也准备做 Linux 掌机
|
19
zsl199512101234 2022-05-12 13:37:55 +08:00
正式工作,谁会用 Linux 桌面,太不稳定了
|
20
2NUT 2022-05-12 13:45:43 +08:00
调查下 国内除了 安卓端 还有谁在用 flutter ?
|
21
IvanLi127 2022-05-12 13:46:29 +08:00
@zsl199512101234 用过一段时间的路过,个人感觉还算比较稳定。
|
22
darklights 2022-05-12 13:48:41 +08:00 4
所以,又又又又又又又又又一个 Linux 年要来了?
不过感觉还是有点难度,我试着证明一下。 前提事实 1:国内 Linux 不流行,是因为以腾讯为首的毒瘤厂商。这是键盘先知们论证出的、众所周知的毒瘤定理。 前提事实 2:国外 Linux ,也,不怎么流行。 前提事实 3:国内以腾讯为首的毒瘤厂商,在国际上业务不多。 据上推测:国外也有阻碍 Linux 发展的毒瘤。 根据毒瘤定理:毒瘤 = 不适配 Linux ,我试着在维基上找了一些国外大型软件厂商的资料(渣软看都不愿看一眼)。 Apple:似乎没一个软件有 Linux 版,包括 iCloud 、Apple Music 等面向普通用户的平台级软件。 Adobe:似乎除了 Flash 和为数不多的服务器端产品,全部产品没 Linux 版。 Autodesk: 似乎除了收购来的 Maya ,大部分产品都没 Linux 版。 综上,毒瘤 3A 不死,Linux 桌面不生! (悄悄的说一句,Figma 这货 Electron 打包网页的,居然没有 Linux 版,好了,可以竖中指了) 我是越来越无聊了。 |
23
zsl199512101234 2022-05-12 13:51:32 +08:00
@IvanLi127 涉及到办公真的不得行,自己私下玩玩可以,(投影,excel ,有些软件没 linux ,反正各种问题就来了)
|
24
Chingim 2022-05-12 14:14:22 +08:00 via iPhone 4
Linux 桌面没人用,难道是因为
1. 没有跨平台的 gui 框架支持 2. 没有开源的 n 卡驱动 吗? |
25
Cloutain 2022-05-12 14:15:12 +08:00
我觉得反而是 SteamOS3.0 版本有希望成为好用的 Linux 桌面。。。。 希望 SteamOS3.0 版本早日开放
|
26
Buges 2022-05-12 14:21:04 +08:00 via Android
@darksword21 @yolee599 @rekulas
别管再怎么瞧不起 electron ,我的感觉是,某个应用只要不是 electron 开发的,除极少数外几乎都没有 Linux 版。而用 electron 开发的,再怎么烂,还是有不少支持 Linux 的,而且体验、功能、和稳定性上与 win/mac 接近。 |
27
duke807 2022-05-12 14:30:09 +08:00 via Android 2
@zsl199512101234
linux 很穩定,我現在用的系統是十年前安裝的( gentoo/xfce ),不出意外的話能用一輩子,不用重新安裝系統 很多對穩定性要求極高的行業都是 linux only ,譬如芯片研發涉及到的商業 eda 軟件,清一色只支持 linux 桌面 |
28
Y29tL2gwd2Fy 2022-05-12 14:32:26 +08:00 via Android
flutter 写的东西都是什么 shit 产物
老老实实搞 native 不好吗? |
29
darksword21 2022-05-12 15:02:35 +08:00 via iPhone
@zsl199512101234 我用
|
30
darksword21 2022-05-12 15:06:52 +08:00 via iPhone
@Buges 我还真没遇到哪个 ele 开发的应用是必须要的,或者是稍微都点刚需的,是不是可以理解成使用 ele 开发的应用一般也都不咋地,然后因为框架原因顺便说自己“跨平台”
导致我现在看到个跨平台的应用已经 ptsd 了,它自己不标出是 ele 写的我都会在 repo 中模糊搜索一下,到现在还没活的装下来的 |
31
zjsxwc 2022-05-12 15:07:34 +08:00
我全是 electron 版本的聊天工具
1 ) 办公聊天用 linux 钉钉,可以视频等功能比较全,分享大文件也稳定 yay -S dingtalk-bin 2 ) 普通聊天 uos 微信(不能 ctrl+v 粘贴截图工具截图到剪切版里的图片,可以托拽发送文件) yay -S wechat-uos 3 ) 普通 qq 聊天 icalingua++(可以 ctrl+v 粘贴截图工具截图到剪切版里的图片,也可以托拽发送文件,但不能 qq 视频聊天) yay -S icalingua++ |
32
IvanLi127 2022-05-12 15:37:40 +08:00
@zsl199512101234 我就是工作的时候开发用,那些软件我可以不用。谁逼我用,我还能有借口说没得客户端,直接清爽了。不过换了公司就没继续用了。用着反正还算可以。
|
33
zuokanyunqishi 2022-05-12 15:42:00 +08:00 via Android
工作用乌班图 2 年,自用 5 年。没觉得不方便哇。沟通工具钉钉,飞书,企业微信。还有 deepin–wine
|
34
rpman 2022-05-12 15:43:01 +08:00 1
Electron 警察太可怕了
|
35
rekulas 2022-05-12 16:15:40 +08:00
@Buges 并不是看不起 electron ,它确实很方便包括我们自己内部也有在开发,但是现在 electron 什么都想引入,导致太臃肿庞大了,我相信 html 桌面开发会越来越流行(现在的趋势也确实是这样),但不大可能一直是 electron 引领-如果它不革新的话
希望后起之秀比如 webview2 进展快点,要么超越它要么迫使它改变 |
36
ykalone 2022-05-12 16:17:21 +08:00
@darksword21 没见过不代表没有哦 vscode 不正是 electorn 的代表作吗,只不过微软调教的好
|
37
ColorfulBoar 2022-05-12 16:29:26 +08:00 4
|
38
ochatokori 2022-05-12 16:35:02 +08:00 via Android
@encro #11 网易云音乐不是吧
|
39
darksword21 2022-05-12 16:39:19 +08:00 via iPhone
@ykalone vscode 得承认确实调教的不错,但是我用 emacs 😆
|
40
WebKit 2022-05-12 16:40:49 +08:00
现在已经有全用 flutter 开发的 linux 全套桌面端了。
|
41
Buges 2022-05-12 17:15:37 +08:00 via Android
@darksword21 恰恰相反,我在 Linux 桌面的体验是 electron 开发的应用质量反而较好。这不是说 electron 好,而是因为 electron 各平台的一致性强,导致没人关心的 linux 平台体验接近 win/mac ,从而总体上体验较好。像用 qt 的 wps ,字体、输入法各种 bug 一大堆,jb 家 IDE 输入法光标偏移,再或者 Linux 版功能阉割、版本严重滞后等问题,electron 应用极大的避免了这些问题。
至于刚需,像 teams 、slack 这些都有网页,确实算不上刚需。但国产应用阉割网页强推应用可是传统艺能了,像百度网盘这种,客户端不支持的平台根本没法用。 |
42
encro 2022-05-12 17:23:04 +08:00
@ochatokori
网易云音乐,钉钉,微信桌面是基于 Chromium Embedded Framework , 以前都能找到基于 nw , 现在好像找不到 nw 相关文件了, 微信现在是直接用 QT 了。 @darksword21 应该 V2 还是有一半以上用 vscode 的吧。 我自己现在也在关注 webview2 ,flutter |
43
lakehylia 2022-05-12 17:25:46 +08:00
当年 WP 的 1%事件了解下。企业是要盈利的,不盈利是没有动力搞这个事情的。除非 ZF 定制,
|
44
yueisme 2022-05-12 17:36:02 +08:00
驱动不是首要问题吧,知乎有人吐槽过 https://www.zhihu.com/question/383593333/answer/2357712591
|
45
lmshl 2022-05-12 17:40:08 +08:00
我感觉 Compose-jb 也有戏,既可以白嫖 Android 控件,又可以白嫖 Java 生态,还是 Kotlin 写
|
46
dioxide 2022-05-12 17:42:45 +08:00
我就好奇 Electron 的应用, 不论规模大还是小, 它是怎么做到那么“卡”的. 如同在代码中写了 sleep( ) 一般.
|
47
sundev 2022-05-12 17:46:24 +08:00 via iPhone
linux 桌面要起来肯定要统一桌面,不然力量太分散了!
|
48
unclemcz 2022-05-12 19:18:01 +08:00
|
49
jin5354 2022-05-12 20:18:37 +08:00 1
有的用就不错啦,还这么挑呢
electron 的改善版早就出啦,tauri ,基于 rust 的 webview 渲染工具,四万多 star 呢,你看看市面上有几个基于 tauri 的跨平台产物了。归根结底还是市场小,出啥公司都懒得开发 |
50
WhatIsMyUsername 2022-05-12 21:13:12 +08:00
Linux 用户表示真不懂为什么这多人这么恨 Electron 。
|
51
xinh 2022-05-12 21:19:13 +08:00 via iPhone
不懂那么多技术,纯用户小白,xfce 桌面很好了挺漂亮的,不像 win 那样单调,除了一个工作必要软件和建行网银需要 win 外,xfce 感觉是真不错。
|
52
ysc3839 2022-05-12 21:38:07 +08:00 via Android
https://v2ex.com/t/852310#r_11653030
我到现在都没搞懂 Linux GUI 的硬件加速是什么模式,硬件编解码有个 v4l2 、有个 vaapi 。渲染用哪个接口性能最好? x11? xvideo? vaapi? opengl? vulkan?怎么实现 FreeSync 或者 G-SYNC ? 感觉 Linux 底层的 API(POSIX API)很简洁,但上层的则混乱不堪,比 Windows 还复杂。 给公司电脑安装带 GUI 的 Linux ,其中一台 i7-6700 CPU 的电脑,安装后核显黑屏,试过 CentOS 7, Ubuntu 20.04, Ubuntu 21.10 都是相同的情况。复制 kernel log 里面的报错去搜索,似乎没找到解决方案。 最近给另一台 CPU 是 i9-10900 的电脑安装 Ubuntu 22.04 ,安装完后看似正常,但是屏幕时不时会黑一下然后恢复,这次在 kernel log 里面都没输出什么信息。而 Ubuntu 20.04 却没问题。 所以较长一段时间内我仍然不会考虑使用 Linux GUI 。 |
53
ysc3839 2022-05-12 21:41:33 +08:00 via Android 1
@jin5354 我不认为 tauri 能推广开,很多人使用 Electron 的原因是背后是 Node.js 环境,可以用和前端一致的语言来写代码。tauri 直接上了 Rust ,这会劝退很多前端开发者。
|
54
Buges 2022-05-12 22:19:05 +08:00 via Android 3
@ysc3839 vaapi/vdpau/nvenc/nvdec 这些是不同 GPU 厂商提供的视频编解码库 API ,其实现由 GPU 厂商驱动提供,其调用者通常为 mpv/ffmpeg/chromium 等需要编解码的应用程序。opengl/vulkan 这些通用图形渲染 API 标准就不用说了吧,都是跨平台的各平台都一样,其实现也是由 GPU 厂商驱动提供。x11/wayland 是显示协议接口,地位类似于 win32 ,只负责把渲染好的画面显示在屏幕上。xvideo 不是视频网站么,没找到名字中包含这个词的包,可能你指的是古早的 xf86 系列图形驱动?那是 X server 的插件,也是由 GPU 厂商提供,不过现在基本都是内核 kms 不需要了。至于 G-SYNC 之类具体就不清楚了,似乎都是 GPU 提供的功能吧,应该和操作系统平台没啥关系。
|
55
Scare 2022-05-12 22:49:39 +08:00
等 Steam Deck 大规模铺货吧,年轻人的第一台 Linux 掌机,哈哈。感觉还是有些对普通人实用的感觉才好推广,
|
56
deorth 2022-05-13 00:00:45 +08:00 via Android
不知道上家从哪里转来的三手分析
“倒是 Nvidia 驱动开源的消息并不是皮衣黄良心发现……而是 Turing 开始提供了 RISC-V 小核心,叫 GPU System Processor ,驱动的大部分内容将会移动到这上面跑,驱动以微码的形式喂给 GSP ,然后驱动变成 RPC Client……也就是开源社区要窥探 Nvidia GPU 的设计原理还是想多了” |
57
tedding 2022-05-13 00:46:22 +08:00 via iPhone
@zsl199512101234 一直在用 linux openSUSE 每天滚一滚
|
58
ericls 2022-05-13 00:56:59 +08:00 via iPhone
用了十几年了 才春天?
|
60
Maboroshii 2022-05-13 01:09:39 +08:00 via Android
每年都有春天正所谓每年都有春天,哈哈。
linux 写代码确实爽 |
61
MacDows 2022-05-13 02:08:54 +08:00 via Android
开源驱动是不是之前黑客的事情?
|
62
Chancel 2022-05-13 09:07:39 +08:00 via Android
一圈看下来好像没人用 kde ➕ xfreerdp 方案的,现在的 pc 配置虚拟一个 Windows 也不算很大的资源开销了吧
|
63
jjx 2022-05-13 09:13:17 +08:00
类似 electron,nwjs,cef,webview 之类的没有那么不堪了
linux 很多应用先得解决有的问题, 然后再去谈优秀 |
64
securityCoding 2022-05-13 09:25:33 +08:00
有没有未来看指标啊,有人用自然会投人力
|
65
monetto 2022-05-13 09:41:24 +08:00
@Buges 支持 Electron +1 ,Linux GUI App 匮乏的问题才是首要问题,什么技术选型感觉并不重要。关键是要让 应用 在 Linux 平台上,完成从 0 到 1 的过程。
|
66
xuanbg 2022-05-13 10:10:43 +08:00
正经工作和玩游戏有几个人会用 Linux 桌面?没人用就没人搞,没人搞就没人用。。。所以 Linux 桌面搞这么多年还是个玩具。
|
67
ysc3839 2022-05-13 10:17:16 +08:00 via Android
|
68
xPKK1qofAr6RR09O 2022-05-13 10:22:46 +08:00
喷 Electron 的是不是不希望 Linux 好🌚
|
69
smoon 2022-05-13 10:47:12 +08:00 via iPhone
20 年前就这么说
|
70
abcysn 2022-05-13 13:15:37 +08:00
我日常用 debian lxde 快十年了,微信 QQ 只手机上用,其它程序偶尔用用 virtualbox 虚拟机,习惯了没感觉哪不好,很稳定不用折腾,平时基本不关机,上次关机还是半年多前为了把 debian 9 升级到 debian 11 ,再上次关机是两年前,为了加 ssd 硬盘
|
71
xiaojun996 2022-05-13 13:20:29 +08:00
@ochatokori macOS 的网易云是 webview 不说 electron
|
72
learningman 2022-05-13 17:13:27 +08:00
@nicevar 你觉得这几个的用户加起来有微信多吗,微信 electron 写的
|
73
nicevar 2022-05-13 18:24:21 +08:00
@learningman 我很确定的告诉你只会多不会少,别说其他的,微信的电脑客户端可能还没有一个 Qt 写的 AMD 驱动管理 软件多,更别说金士顿的硬盘管理、暴雪 Battle.net 及 11/约战 /09 等各种游戏平台、adobe 和 autodesk 的软件都是用 Qt 的,还有一堆股票软件甚至微软的 OneDriver 也是。
|
74
learningman 2022-05-13 18:54:24 +08:00 via Android
@nicevar 他有个限定词,跨平台,你这里哪个跨平台了
|
75
nicevar 2022-05-13 19:14:46 +08:00
@learningman 你真的搞笑,跨平台说的是技术,Qt 不是跨平台的?再说你要非得扯跨平台软件,你自己说的微信有 Linux 版本了?除了 wine 和 uos 你看有其他发行版本的?
|
76
e3c78a97e0f8 2022-05-13 19:23:57 +08:00
如果 Flutter 3 给 Linux 做支持需要的代价很小,而且流行了起来,那的确可能会导致更多的应用能支持 Linux
不过腾讯这个毒瘤就算了,就算它只要点一下 compile 就能支持 Linux 它也不会支持的 |
77
xinhaiw 2022-05-13 19:46:39 +08:00
各位吐槽的 electron ,请卸载 vs code
|
78
learningman 2022-05-13 20:46:15 +08:00
@nicevar Qt 是跨平台的,那你见到了几个跨平台的 Qt 软件呢?微信的 Linux 版本完全可用,是人为施加的限制。
你说“我不知道什么地方的数据 Electron 是第一”,反驳的是“当前主流跨平台桌面应用技术也就那么几样,electron 已经是事实第一了。”。你举的例子很明显是需要符合跨平台这个点的 |
79
nicevar 2022-05-13 21:02:05 +08:00 1
@learningman 开始胡说八道了? Qt 跨平台软件还少?我随便都是数出几十个,平时的开发工具一大堆 QtCreator 、KDevelop 、LiteIDE 、HBuilderX ,Adobe 的软件你没见过? Autodesk 的也不知道? WPS 没用过?音乐类的 Guitar Pro 、MuseScore 呢?远程控制 TeamViewer 呢? Google earch 呢? VirtualBox ? VLC ?都没听过? Qt 开发的跨平台软件都满大街了,软件名差不多 26 个字母打头都排满了,还问我见到了几个跨平台的 Qt 软件,无知就算了,我不知道你为什么非要嘴硬。
|
80
learningman 2022-05-13 21:35:23 +08:00 via Android
@nicevar 我不想和你对着报菜名,但是你好像在说梦话。
Autodesk 有 linux 版本吗? Google Earth 好像转向 wasm 了吧?而且你讲了一大堆,怎么都是专业软件啊。给普通人用的讲几个? WPS 可能接近吧,你要不要看看楼上的吐槽? 你应该不是无知,你只是缺乏必要的逻辑训练而已,缩略称为蠢,似乎也不太恰当,就算是不爱动脑吧。 |
82
nicevar 2022-05-14 12:03:28 +08:00
@learningman 蠢这个字用来形容你都是抬举你了,首先 AutoDesk 不是软件,明白吗?其次 AutoDesk 系下有 Linux 软件版本,你无数次把脸伸过来让我打,我都懒得打了。Google Earth 好像转向 wasm ?好像?你去下个软件看一下就这么困难?一开始你扯跨平台,后来你说见到了几个跨平台软件,我列举了一堆,你又说这些是专业软件,那我问你,wps 是专业软件? vlc 是专业软件?你这人无知就算了,还不愿意去了解也不愿意去学习,光嘴巴硬有用?哪怕你去看一下 Linux 下的各种小软件包括发行版预装的,你都会发现一大堆都是 Qt 做的,我说的够明白了么?
|
84
secondwtq 2022-05-14 12:30:46 +08:00
话说 Steam 虽然是 CEF ,用起来简直不是 Electron 胜似 Electron
|
85
FrankHB 2022-05-14 18:01:53 +08:00
@encro 基本上多数人都会考虑的上规模的,也就一个死命优化的 vscode 还能看了,即便如此也只是能用,并不相对非 Electron 实现的竞品比起来明确占优势。没那么上进的同类货色……比如看看 Atom ,坟头草多高了?
倒不是看不上 Electron ,说实话里面的黑科技还是挺多的。 然鹅 Electron 自身的技术弱点决定了要实现能实用的规模产品,必须投入巨量的资源,而且撑死也就是“比较能用”的范畴。所以除了迁移 Web 应用,对大多数开发者基本也只适合试验做原型。而做原型的选择未来也只会更多,固有问题解决又极其困难,所以注定前景不会好哪去。 @XiLingHost Unity 在跨桌面这个坎上不成气候。 真算上,那么跨 Windows 桌面和 XBox 呢……是一个概念么。 @learningman 别的小儿科不提,Qt 有被拿来实现 KDE ,Electron 有个啥同等的玩意儿呢? 或者你更愿意嗦 GTK+? |
86
learningman 2022-05-14 19:21:28 +08:00
@FrankHB 是,Qt 高性能,企业级,啥优点都是他的,但是 Electron 从其他平台迁移几乎 0 成本啊。
就国内 Linux 现状,你想用上 Linux 版也就只能指望人家 0 成本顺手给你输出一下了。 |
87
encro 2022-05-14 20:21:16 +08:00
@FrankHB
公司跨平台项目当然可以选择 Qt ,其实我们公司也是用 Qt 。 只是 Qt 还是存在一些问题: 一是 C++门槛其实比 rust 还高(除了 Python 的绑定外其他都不太成气候); 二是 Qt 毕竟很多年了,写起来没有 mvvm,数据绑定,不能用样式,写和调试起来没有用前端技术的开发效率和体验。 如果是成熟项目,追求性能和跨平台,当然可以选择 Qt; 如果对性能要求不高,只是跨平台,或者没有 C++储备,当然选择 electron,tauri,Avalonia,win ui 3,webview2,flutter 等相对比较新技术。 |
88
FrankHB 2022-05-15 01:04:20 +08:00
@learningman 牛头不对马嘴……你看看你在这里的几个回复有几个是正面回答了他人对你的说法的疑问的?
我对“企业级”什么的就没兴趣(高性能?要不是欺负的是 Electron ,啊呸……),你看看你说的是个啥? 承认 Electron 在桌面基本没生态(除非你好意思把 Web 硬是直接算成 Electron ),偶尔有个能的应用基本都是自带运行时而没有现成的系统基础设施的广泛支持,有这么难么? 所谓“从其他平台迁移”,你这个其他平台,不就是 Web ?要是有不兼容的 native 组件需要移植,也和 Electron 自己没什么关系,不管是优点还是缺点。当然你非得把一个系统上的 Electron 当作一个平台如蜜传如蜜,那当我没说。 相对地,一大票 Qt 软件直接就是原生开发好的,一样不用迁移,无非是重新构建一次,一样能做到所谓的几乎 0 成本。区别只是 Qt 故意开发不可移植的应用仍然更容易。但就这里的问题,本来用 Qt 就是为了跨平台,谁那么空哪壶不开提哪壶?所以你说的还是莫名其妙。 |
89
FrankHB 2022-05-15 01:44:11 +08:00
@encro 个别应用用 Electron 可以,带上桌面环境或者大型 GUI 应用的,Electron 基本没戏,并且不大会随着时间推移而改善——这是我先前表明的基本观点。
其实桌面跨平台开发的问题挺经的了,包括 Electron 和 Qt 在内的话题讨论过很多次。在 v2ex.com/t/841554#r_11485005 这里就有很多细节。 老实说,Qt 的问题其实非常大,纯属矮子里拔高个。关键是如果想要跨平台,就没几个选择。Qt 是现有 GUI 框架方案中功能、性能、工具、社区支持、案例资源……等方面整体均衡考虑下最完善成熟的一个。虽然设计有很多挑战忍耐力的小问题,成本也算不上很低,但是并没有像 Electron 那么显著、容易在一大类项目中一票否决的缺陷(像上面讨论的问题中 OP 直接就不接受 Electron );也没有贸然采用不那么流行的新的方案的风险。 基本上现实会考虑 Electron 的主要是两类:从现有前端项目迁移;有相对比较多的前端开发人员,但是别的人员不充裕。其它情况,Electron 很难成为首选项。特别地,想要完全解决各种没法预期的问题,和自己维护一整个浏览器的技术难度差不太多,不像其它很多方案实在不行自己魔改一下也行。相对改浏览器运行时,C++的原生框架就算需要魔改定制,都不算多困难了。 Qt 不是不能用样式,QML 这种照抄前端的方案直接就能 CSS 定制。不过我个人对那套不太感冒(开发体验也不会有 Web 成熟)。 MVVM 不是万金油,特别是有一部分典型的桌面应用不那么合适。若干年前微软发明 MVVM 的就写过一些技术文章讨论里面的缺陷,记得大致意思是比 MVC/MVP 等都更重量级,性能必须有损失(当然比起 Electron 、Flutter 之流嘛基本可以忽略),而好处基本体现不出来。不过这是相对比较细节的问题。Qt 在这个架构模式这个层次上的设计也确实不咋地(相对 WPF 等),而且要真用上 MVVM ,(就 Qt 框架设计者的 C++水平看)怕是出来的 API 只会更难看和难用。 Python 绑定用起来是一时爽,但如果要自己重现里面的技术,做框架级别的开发就蛋疼了。(最近几个月我还在头疼怎么搞出个类似 Shiboken 的东西,同时避免对 Python 的依赖。) (其实我是有本事手糊跨平台框架,但是我没本事保证足够的人力出完善的解决方案,所以就忍了。) 其它技术,像 GTK+和 wx 这样同属 native 的,资源比 Qt 缩水多了(也许一般开发者体验到的最大的好处就仅仅是不用 Qt 恶心的 C++ moc )。而像 Flutter 之类基于动态 GC 语言的框架,大多类似 Electron ,根本上不能指望克服类似的缺陷,并且显然还没 Electron 资源丰富。 微软的一些东西做得相对中庸一点,但你没法确保啥时候微软自己怂了就跟 WPF 一样丢下转进跑路了,留下社区收拾不了的鸡肋烂摊子。再者,Windows 自己 GUI 风格带着开发体验碎片了一地,也很难让现在的桌面开发者对微软重拾信心。并且像 WinUI 这种直接扔下旧版 Windows 不管的作风(明明就算加个支持也不是很难就是不干),很多传统开发者是不买账的。 所以我不觉得这些方案有更大的发展空间能一桶浆糊。 考虑这些新的方案就没有一个打算(能不能先另说)同时解决以前的主要痛点,反倒要超额投入精力才能熟练,学到的东西复用还困难,这也太微软了。因此,在具体刚需前没什么上车的必要。 |
90
learningman 2022-05-15 09:08:01 +08:00
@FrankHB #83
1. Qt 是 C++, 门槛高。 2. Qt 我也写过,说是跨平台,实际上多多少少还是要写平台特定的代码。就国内 Linux 现状,会有厂商出这个力气吗? 3. “所谓“从其他平台迁移””,指的是写了一个 Windows 的客户端,转换成 Linux 基本没有成本。 4. “偶尔有个能的应用基本都是自带运行时而没有现成的系统基础设施的广泛支持”,换个角度看,这是不是就是兼容性好?有一大堆依赖可能反而不好装? |
91
learningman 2022-05-15 09:09:01 +08:00
@FrankHB #83 如果没有路径依赖,我看不出有啥非要上 Qt 的理由,用户的硬盘值几个钱啊,能跑就差不多了
|
92
encro 2022-05-15 09:43:18 +08:00
@FrankHB
结合现状: 当前做客户端的主要是云端产品,需要数据同步,界面复杂交互多,界面变化快开发周期短,手机端、WEB 端和客户端技术栈尽量复用,团队成员上手快,所以才造就了现在使用 electron 产品较多的现状。 相反界面不经常变,主要和硬件底层交互,经常需要利用操作系统底层 API ,公司有 C++人力储备,资金周期充足,项目需求确定,对性能要求高,那么就选择 Qt 。 |
93
m16FJ06l0m6I2amP 2022-05-15 11:22:53 +08:00
mac 是挡在 linux 面前的一座大山
|
94
dixeran 2022-05-15 14:11:13 +08:00 1
@ysc3839
https://gitlab.freedesktop.org/xorg/lib/libxv https://docs.huihoo.com/dragonflybsd/handbook/video-playback.html 你说这些都是开源社区和商业公司各弄各的产物,结果就是生态非常的碎片化,兼容性很难做。 |
95
FrankHB 2022-05-15 23:10:10 +08:00
@learningman 1. 不要看古董和野鸡教材误导浪费时间,就开发个普通的 GUI ,C++有的那些烂门槛,实际怕还不如 Qt 的非标准工具搞出来的破事多。
你倒不如说 C++开发 UI 效率整体还是低。这个尽管近些年有改善,但从没彻底解决;想跟前端比差远了。 2. Qt 的平台特定的代码,一部分是故意的(因为不是每个平台都能支持相同的功能),少部分是太旮旯,少人关心。 相比之下 Electron 更统一,但是真需要平台特定的功能,基本全部要你自己搞定。所以这个比较不公平。 不过这部分的选型问题我中立,因为 Qt 的 C++用起来算是比较恶心的,UI 以外的部分都不见得比无视 Qt ,全部自己搞定方便,所以没明显优势。 3. 那按上面我提的,当我没说。 4. 这有点强词夺理。即便是依赖 Qt 的应用,也可以要用户自己源码编译或者可以自带二进制文件,但为什么非得费力不讨好?体验明显差。 注意 Qt 的二进制文件基本上是 native 方案里最大的、跟部署个浏览器没差多少、基本上同样被鄙视的那类(特别是 Windows 上基础设施支持薄弱,装了也很难复用,到处复制 dll 算是传统艺能了),与其说兼容性,还不如说是在安装体验上拉到了几乎跟自带浏览器的应用同等低劣的水平,这点更容易让用户感知到。 就算硬盘空间不值钱,流量和用户的时间仍然经常比你想象中的更值钱。 Electron 在这里选择余地更少所以仍然更差。 @encro 大部分“桌面”应用,指的是传统上 UI 和功能集合在一个软件产品的应用。即便如此,有的(如 Office )也在往 Web 跑,回到桌面(至少在现有桌面开发体验极大改善前)不是主要趋势。 如果一个产品的服务端的重要性占比例太大并且 Web 实现够用,那么其实并不太有提供桌面客户端的需要。毕竟桌面浏览器现在整体能做到的比移动端强得多,用户习惯也普遍不一样,犯不着非得单独多给个 app 加深粘性。 既然已经部署成云服务了,顺手能写个 Web 的,干嘛非得再多此一举呢?多少有些凑 KPI 的味道了。 |
97
kwanzaa 2022-05-16 08:00:31 +08:00
@darklights Swift
|
98
encro 2022-05-16 10:17:50 +08:00
@FrankHB
对于云应用来说:主要就是能本地保存一份数据,达到提高性能,远程工作,随时随地工作等目的,所以才开发客户端。 对于很多应用,用 Web 类技术方案,效果也还行: 1 ,即使通讯:钉钉; 2 ,编辑器类:vscode; 3 ,设计工具类:figma; 更多可以看: https://www.electronjs.org/apps electron 仍然可以算创业公司的一个不错选择吧。 我觉得另外一个不错选择是 Avalonia ,特别是用了 https://icons8.com/lunacy 之后。 当然还有 tauri 。 终究 C++要写出没 BUG 程序,对于很多公司来说还是太高,招到靠谱程序员也难。 |
99
FrankHB 2022-05-16 22:06:13 +08:00
目的上……现状大致如此。如 vscode 这样的编辑器,其实用浏览器代替,也不会比 ssh 过去再用麻烦(即便编辑本地文件逻辑上比较感人)。
创业公司实际比较不好说,在 Electron 能胜任的前提下,选型主要倒不如看老板 /CTO 是不是有前端背景。如果直接有整个前端团队那么也还算是很香的(但是也别指望能做到 vscode 的程度)。 另外,我始终认为有必要把 C++/Rust 这些和所有有 GC 的方案区分,不是因为 C++之类的难度如何,而是默认情形的正确性——很大程度上,写 GUI 基本就是从头开始写 bug 。 有 GC 的语言实际上是假定资源默认推迟而没有可观察行为,这对 GUI 根本矛盾,因为 GUI 最基本的需求之一是对响应有要求(应用级的实时性),而程序内部却默认对此几乎完全放弃保证。一些像基于.NET 少数做的还能看的方案,是在框架层次上就死命优化和工具等周边生态配合的结果;相比之下,Electron 之类(浏览器实现)就无能为力或者干脆弃疗,锅都甩应用开发上了。即便是.NET 的程度,还是在鼓励默认和根本需求相违背的写法。 实际上 C++也算不上好哪去,因为 C++同样没能力显式区分描述可观察行为(无非是多了个 volatile ,没有 effect handler 之类),同样没有强制实时性的原生支持,实质上也缺少鼓励异步的写法(新手基本是写出来发现交互寄了点不动,才回去改),因此同样免不了在运行时外面套壳(指应用卡翔以后系统给出无响应界面替代而不是继续阻塞)。只是没默认 GC ,而是要求用户自己在详细设计时搞清楚所有权关系,避免默认就写出看上去顶用但实际就是一坨原生 bug 的玩意儿,已经相对算是进步了(反过来说,直接用默认 GC 的语言写 GUI ,就是明确的退步)。 照例继续多黑弃疗党的代表一下:github.com/dart-lang/language/issues/490 。 |