很久没有玩桌面端了,还停留在以前 mfc 记忆中。知道桌面端的技术栈在这些年已经天翻地覆了,mfc 也没人用了。所以想请问一下,如果你来开发 win 的桌面端,会使用怎么样的技术栈来实现呢?
1
mokiki 2023-07-23 22:55:00 +08:00 1
Qt C++
|
2
mineralsalt 2023-07-23 22:56:00 +08:00 3
现在主流就是套壳浏览器, 真的是非常的恼人。
|
3
lsk569937453 2023-07-23 22:57:40 +08:00
如果不跨端,只做 windows 桌面应用。那只有 WinForms 这一个最优解。
如果跨端,看你会什么。 会 c++,就 QT ,性能强,缺点是得折腾(玩 c++不就是为了折腾?)。 会 node.js+前端,就 electron ,缺点是打出的包 size 很大. ps:最近在学 rust,发现 tauri 也挺好用的,打出的包挺小的。 |
4
cnbatch 2023-07-23 22:58:30 +08:00 1
MFC 时代不是还有 Qt 和 wxWidgets 嘛,这两个现在仍然活着。虽然有不少竞争技术,但 Qt 仍然未没落。
|
5
akira 2023-07-23 23:03:14 +08:00
看需求。 大部分需求,套个浏览器就足够了。
|
6
xtreme1 2023-07-23 23:30:54 +08:00
套壳 avalonia qt
|
7
zsxzy 2023-07-23 23:42:27 +08:00
duilib 小巧好用, 还基于 mfc, 一个字, 稳
|
8
westerndream 2023-07-23 23:48:45 +08:00
感觉可以关注下 webview2 ,就类似安卓 webview 那样的,共用 edge 内核,解决了像 electron 那样打包一堆 chromium
|
9
x77 2023-07-23 23:57:36 +08:00
- 原生,技术比较专业的 QT 比较多。GTK 的也有,但是很少。
- .NET ,微软系的 UWP 、WPF ,不过第三方用 .NET 搞桌面的也不多见。 - 基于 Web 框架,个人不看好,不过有的搞得挺好 - 跨平台框架,像 Flutter ,比较早期,这类优势明显,比较有潜力 |
10
owen800q 2023-07-24 00:25:38 +08:00 via iPhone
Pake, 好像也是 webview 套, 但只有几 m 大小
|
12
raylei OP @mineralsalt 对吧,研究一翻后感觉好多都是用 js ,所以非常迷惘来开了个贴
|
13
flyqie 2023-07-24 01:50:41 +08:00 via Android
要么 qt 要么 electron 。
其他的都不适合跨平台商业化项目。 |
14
17681880207 2023-07-24 02:11:06 +08:00 1
为啥大家都这么在意 Electron 打包之后的这点 size ,就算大,也没有大到离谱吧,我个人认为这点体积的安装包,还没有达到让用户可以拒绝的地步吧。相反,带来的跨平台的效率优势,我觉得 Electron 反而更值得投入了~😁
|
15
2wex 2023-07-24 02:19:02 +08:00
@17681880207 大小不是根本问题,问题是大量不必要的冗余,这对优化强迫症来说是非常痛苦的(而且极客们基本都是优化强迫症)
|
16
codehz 2023-07-24 02:36:23 +08:00 via iPhone
3202 年了,XAML Island 也可以做到几百 k 左右大小了
|
17
putaozhenhaochi 2023-07-24 07:51:51 +08:00 via iPhone
浏览器里写 UI 是最简单和速度的
|
18
thinkm 2023-07-24 08:38:15 +08:00 5
@17681880207 99%的普通用户不会在意这些东西,对他们来说只是点一下下载,点一下安装的事情, 现在千兆宽带的时代,20M 和 200M 的安装包下载时间就差个几秒钟,用户根本体会不到。反而他们会觉得 UI 很好看,比你什么 20M 用 QT 写的好看和现代很多。
只有程序员或者极客才去关注大小之类的,然后拿到网上说。 |
19
loading 2023-07-24 09:00:30 +08:00
如果是简单应用,eletron 最简单,但交互要简单,像 MFC 的拖放 table 或者 tree 控件,一般人用 eletron 却很难写出类似的体验。
有些比较菜的 boss ,你安装包越大,他觉得越牛。(嗯,确实花功夫了。。。) |
20
jearyvon 2023-07-24 09:39:36 +08:00
QQ 都用了类似 electron 了 vscode 也是 electron 。缺点对用户来说很明显。优点对于开发和公司来说太明显了。
|
21
mmdsun 2023-07-24 11:10:17 +08:00
|
22
darknoll 2023-07-24 11:12:43 +08:00
只有 Electron
|
23
blinue 2023-07-24 12:10:59 +08:00
@codehz #16 为了美观肯定要上 WinUI ,最终体积在 25M 左右。只面向 Win11 可以用 dynamic dependency 引入。
|
24
codehz 2023-07-24 12:16:17 +08:00
@blinue 用这个,可以做的很小 https://www.nuget.org/packages/Mile.Xaml
|
25
blinue 2023-07-24 12:29:35 +08:00
@codehz #24 我也在关注,和原生体验有差别,因为 WinUI 有很多自定义控件,而这个项目只移植了样式。我的 demo: https://github.com/Blinue/Xaml-Islands-Cpp
|
26
star7th 2023-07-24 13:18:07 +08:00
除了某些对性能要求很高的场合,一般用 Electron 即可 。也别信那些吐槽 Electron 的人,他们是从使用者出发的,希望使用的软件超高的性能。
但对创作者而言,Electron 是最佳的技术路线,能平衡开发成本和效果。 |
27
star7th 2023-07-24 13:18:46 +08:00
tauri 也别用,生态还不够成熟 。如果对软件体积有极致的需求。
|
28
shyangs 2023-07-24 14:46:26 +08:00
樓主都說了是 win 的桌面端,那就選 C# ( .NET ),
C# 開發速度比 C++ 快,執行速度比 JS 快. windows 預設也安裝了 .NET Framework. |
30
iOCZ 2023-07-24 14:53:03 +08:00
QQ 选 electron 无疑是一种倒退
|
31
liruifengv 2023-07-24 15:18:10 +08:00
tauri 。使用 webview2 ,只开发 windows ,并且不兼容老系统的话没问题的。
|
32
Flybear 2023-07-24 15:18:47 +08:00
不跨平台原生就 WPF 或者 WinUI 3 。
2023 年了,别再用 MFC 或者 WinForms 了,4K 屏看着眼睛都要瞎了。 |
33
unco020511 2023-07-24 17:47:24 +08:00
Electron 大概率是首选
|
34
henryhu 2023-07-24 17:54:33 +08:00
windows7 还有很多用户,electron 打包结果在 win7 上跑没问题吧?
|
35
lxrmido 2023-07-24 17:56:44 +08:00
electron ,相比起效率,对于现在的网络带宽和硬盘价格来说,多出来一个浏览器内核已经不是问题了。
|
36
kimown 2023-07-24 21:23:04 +08:00
electron, 天然的跨平台
|
37
wjx0912 2023-07-24 21:42:58 +08:00
一个 electron 多 100M 。装 50 个软件,也才 5t 。现在的硬盘也不会在乎这么点空间吧
|
38
cs419 2023-07-24 22:22:37 +08:00
说个国人开发的 编程语言 aardio
https://aardio.com/ https://bbs.aardio.com/ 可以开发 windows 桌面软件 大佬更新频繁 还给这个语言写了 IDE 近段时间停更了 说是老婆癌症 要全身心的去照顾老婆 扫码出两百块支持了一下 不知道以后还会不会再更新 |
39
H0H 2023-07-24 23:11:08 +08:00
@cs419 38 ,AAuto 、aardio 抄袭自 Lazarus ,知乎上有讨论,当时的主题叫《 AAuto 为何更名为 aardio?》。
当然,抄袭没多大问题,但是 aardio 是作者一个人维护,不开源,脾气又很差,各种问题都不回答。而且很奇怪的是,对于 JavaScript 调用 windows API 这种涉及到参数转换的,作者居然不知道怎么做。这本应该是他最熟悉的才对,因为 JavaScript 要调用 Windows API 肯定涉及到参数来回的转换啊,否则他这个工具咋写出来的?但看他在论坛中认真回复其他人在工作中遇到传参转换的,他没在开玩笑,完全是认真的说他也不清楚提问人给的场景下具体应该怎么做。把我都看懵了。说他水平差吧,能搞出这么强大的编程语言;说他很强吧,又是基础的问题都不清楚。 这种情况下,如果是在家里给自己写几个小工具,用这个语言没问题。如果是在公司里开发商业软件,那风险就太大了,遇到问题只能靠自己想办法 debug ,网上基本上没讨论的。哪天作者弃坑了,那已经开发出了的各种小工具要完整支持下一代 windows 该怎么办? aardio 我自己在家里也用它开发了个小工具,但只是长时间做了 test ,没敢正式使用,主要是怕里面有恶意代码。而且它那个 IDE 也让我没了信心。作者宣传的是开发的小工具运行很迅速,但它的 IDE 我记得就要 5 秒钟才能打开,这说明运行也不迅速啊。这可能就证明了 aardio 只适合做玩具,真用来开发大一点的工具,性能恐怕是大问题。唯一的优点,就剩生成的 exe 很小。但商用环境下 exe 大小往往不是核心问题。既然这样,为什么不用 Electron ? |
40
jones2000 2023-07-24 23:23:01 +08:00
@wjx0912 带宽,硬盘不是问题, 关键是运行的时候如何抢占更多的资源( cpu,内存,磁盘读写等等), 这样才能让自己的程序丝滑, 把被人的程序卡死。
|
41
xujinkai 2023-07-24 23:34:54 +08:00 via Android
C#写服务肯定不错,但 XAML 那套搞的我头疼,最近在研究直接 WPF 窗口套 webview2 。
虽然前端工程那一套也得学,但个人感觉比 WPF 简单些还漂亮。 |
42
lisongeee 2023-07-25 00:09:42 +08:00 1
上面说的一堆技术基本都不支持 Hot Module Replacement
不支持 Hot Module Replacement 的开发框架 开发效率/体验 都很感人 Hot Module Replacement 对旧时代框架在某种程度上基本是降维打击 |
43
huohei 2023-07-25 00:36:22 +08:00 via iPhone
flutter 做桌面端玩具还是很有趣的
|
44
aprilandjan 2023-07-25 00:54:10 +08:00 via iPhone 1
@henryhu electron v19 及以下支持 win7 ,v20+开始就不支持了,主要是 chrome 104 之后放弃了对 win7 的支持。没什么特别诉求,用低版本一样的,问题不大
|
45
toomlo 2023-07-25 03:37:22 +08:00
感觉 jetbrains 家的编辑器很好看,记忆里好像是基于 swing 还是 fx 独立写的一套 UI 框架来着,有懂的大佬可以说说~
|
46
webcape233 2023-07-25 07:02:02 +08:00 via iPhone
我用 elctron 软件:什么辣鸡玩意
我写 electron 软件:真香啊 |
47
zjsxwc 2023-07-25 07:08:48 +08:00 via Android
Windows 上的 electron QQ 150MB ,卧槽真大。
手机上的 QQ 268MB ,无所谓。 |
48
wxf666 2023-07-25 08:14:54 +08:00
Sciter 咋样?最近才注意到。
- 体积小至 5MB ,不依赖浏览器 - 可使用 Html/CSS/JavaScript 开发 - 跨 Windows 、Linux 、MacOS 三端 - 有 GPU 渲染加速( WinXP 好像没有) 个人可免费使用,付费版开源? |
49
loading 2023-07-25 08:15:24 +08:00
@H0H #39 aauto 作者今年发公告了,突发家属癌症要全力照顾。aardio 我用了挺多次,真的好用,可以说是 windows gui 自带电池的好东西,关键还是这也不收个费什么的,非常良心。
真心感谢 aardio |
50
wuzhewuyou 2023-07-25 08:36:54 +08:00
万物基于 web ,话说多年没有开发桌面需求了
|
51
Jammar 2023-07-25 08:49:38 +08:00
大部分新桌面客户端 electron 已经一统天下了,最不缺的就是前端,开发成本极低
|
52
dj721xHiAvbL11n0 2023-07-25 08:50:35 +08:00
应该的体积现在好像真的不是什么大问题了,现在硬盘的价格也下来了,就是内存占用的问题有点影响用户体验。
|
53
kangyan 2023-07-25 09:16:14 +08:00
最近玩了一下 webview2 ,空包构建出来 80mb ,不知道如何去掉 runtime
|
54
ajan 2023-07-25 09:25:48 +08:00 via Android
@owen800q Pake 编译的 windows 端是利用了 webview2 组件,这货基本上就等于下载安装了一个 edge 浏览器,首次运行会检测 webview2 组件,没有安装就会下载 安装,禁止 webview2 组件联网 会导致编译的 exe 打开后出现网页打不开,且编译的 exe 并不小,且不包含 webview2 组件。
|
55
flexbug 2023-07-25 09:27:06 +08:00
喜报,你已经安装 123 个 electron
|
56
tanranran 2023-07-25 09:32:33 +08:00
主流厂商用啥,啥就成熟。做软件,除了爱心发电,其它都得考虑商业能力
|
59
wxf666 2023-07-25 09:36:53 +08:00 1
@17681880207 #14
@thinkm #18 @star7th #26 @lxrmido #35 @wjx0912 #37 @Jammar #51 用 Electron 来写软件的,会不会意味着软件开发水平的下降?导致开发出来的软件体验很差? 比如 [这个帖子]( /t/955422 ) 里提到的几个 Electron 应用: - 夸克网盘:**上传**一个 50 GB 的文件,要**写**硬盘几 TB (滥用 IndexedDB 导致) - 天翼云盘:下载文件时,每小时要**额外写** 40 GB 。下载 4 GB 文件,读写 170W 次文件。。 会不会 Electron 屏蔽了底层细节,抽象得很好,开发人员对代码逻辑的成本高低没有感知,就瞎 JB 写了。。 |
60
Vindroid 2023-07-25 09:57:34 +08:00
用的 Qt(C++),感觉不会 c++也能玩转 Qt ,封装得很好,当 java 来写都没什么问题,还能跨平台,虽然成本不小
|
61
PVXLL 2023-07-25 10:00:31 +08:00 via iPhone
html
|
62
lsk569937453 2023-07-25 10:00:46 +08:00
@Vindroid 不会 c++也能玩转 Qt ---->这句话是不是暗示 PyQt
|
63
Jammar 2023-07-25 10:56:14 +08:00
@wxf666 electron 是由前端人员完成,前端懂个锤子操作系统的内部函数逻辑,大公司比如钉钉都有相应的优化,至于其他的,能跑就行,都不一定需要跨端
|
64
sunrain 2023-07-25 11:05:20 +08:00
javafx + graalvm
|
65
thinkm 2023-07-25 11:23:39 +08:00
@wxf666 看你写软件的目的,如果你的目的是提升自己能力就不要用 Electron ,如果你的目的是开发方便快捷,并提升用户体验就用 Electron
|
66
BG7ZAG 2023-07-25 11:42:33 +08:00
electron 或者 flutter
|
67
StateMa 2023-07-25 14:00:08 +08:00
electron
QT winfrom 1 最简单入门最快 23 都是老熟人了 至于 electron 的大小问题我记得可以替换内核来减小包大小,winfrom 里能替换 web 内核我用过。electron 之前见过。 |
68
D6IIx 2023-07-25 14:17:19 +08:00
@putaozhenhaochi 如何打包成 exe 部署呢?版本迭代的数据如何保留?
|
69
putaozhenhaochi 2023-07-25 14:22:53 +08:00 via iPhone
@D6llx electron 有打包工具的 数据你搞个 sqlite ?
|
70
zgl263885 2023-07-25 16:14:07 +08:00 via iPhone
@lsk569937453 wpf 表示不服
|
71
star7th 2023-07-26 11:59:32 +08:00
|
74
wxf666 2023-07-27 23:38:11 +08:00
@Jammar #63 基本的计算机知识得要有吧。。哪有一个 4GB 文件,分成 18W 份临时文件的。。
@thinkm #65 提升用户体验,是说好看吗? @star7th #71 不一定。天翼云盘那个可能是程序员的问题,就算不用 Electron ,换其他工具也一样。 但夸克网盘那个,可能真的是 Electron 封装得太好,导致开发者以为,预先分片任务到 IndexedDB 没啥代价了。。(结果搞了 几 TB 写入出来。。) 我的意思是,就是因为简单,所以什么人都能胜任,但深入的细节可能由于自身没有知识储备,处理不好,所以质量可能比 QT 等软件的差。。 会 QT 之类的,应该就暗含对计算机比较熟悉的前提条件了吧?那开发出来的软件质量高,也是大概率的事情? |