现在 windows 原生桌面开发能做到 win11 类似的界面吗?需要自己写还是说原生开发就自带了那些组件?
准备先试试wpf和electron
electron是js生态的,确实比较强大,主要是包太大了,估计整完一个安装包得200+M,安装完得500+M,怕是把用户给吓跑了
WPF试了下helloworld,打包成单文件只有150k大小,用户再单独下载一个.net6 runtime,差不多8M多,安装完就能跑了,感觉还不错?虽然要手动安装runtime可能有些人也不喜欢,见仁见智吧
WPF的问题是,我现在还搞不清楚windows 桌面开发的一些名词,win form, WPF, WinUI,MAUI,Avalonia,xamarin 等等,整迷糊了
还漏了个Blazor,太多名词了。。。。
有大哥知道这种算是什么框架吗?
https://github.com/NetDimension/NanUI
我在找ui 控件时发现的,感觉像是winform套了个浏览器?那这种应用的体验和原生相比怎么样呢?
1
3dwelcome 2022-03-31 09:36:48 +08:00
现在 windows 原生基本上很少用 C++了,全部都是 C#。
B 站有教程,好像写到后面,组件堆砌还是很复杂。除非你程序就那么几个按钮。 试一下 electron 吧,那是真的省心省力。 |
2
ysc3839 2022-03-31 09:49:47 +08:00 via Android
如果你说的是 Fluent Design 那种,那可以做到,直接用 Xaml Island + WinUI 2 就行,组件都是 XAML 和 WinUI 提供的。
|
4
nicevar 2022-03-31 10:17:26 +08:00
原生的运行组件应该有版本要求的,win10 某个版本以上,如果做的应用不是很重要,可以用 Electron ,打出来的包确实比较大,前阵子给客户做了一个打包出来 400 多 M ,用 Qt 的话要不了 50M 。
|
5
3dwelcome 2022-03-31 10:18:42 +08:00
@zxCoder 个人非常不倾向于原生直接开发。
原因是现在 GUI 跨平台解决方案,比起以前成熟不少,选择也多。比如 QT 之类。 就算原生开发,组件复杂后代码量也不少。普通人 JS 写个 VUE 组件,再怎么也比 C#里写要快。 |
7
zxCoder OP @3dwelcome 试了不到一个小时,就卡住了 hhh ,按官网的打包教程就一直报错,搜到了 github 和 statckoverflow 上好几个为解决的 issue (
|
8
shawnsh 2022-03-31 11:33:15 +08:00 via Android
@3dwelcome 原生不原生开发是看具体项目的,别以为跨平台是万能的,里面坑可不少。项目灵活度还是应该考虑的,跨平台灵活度太低,适应范围有限
|
9
Chad0000 2022-03-31 11:38:16 +08:00
能固定 Windows 这个环境的话,直接就上 WPF 了。
|
10
ysc3839 2022-03-31 12:01:14 +08:00 1
怀疑是 X-Y Problem coolshell.cn/articles/10804.html
建议楼主说一下原始需求 |
12
singerll 2022-03-31 12:04:58 +08:00 via Android 2
electron 是真的垃圾,总有一种卡顿的感觉。这种桌面应用不到万不得已我从来不装。
别跟我说是你不会优化,你看 vscode 都多好啥的,这就跟我说高中学历不行你非要拿比尔盖兹给我举例子一样,没有意义。 |
13
maichael 2022-03-31 12:18:58 +08:00
没有跨平台需求强上 Electron 就是给自己找麻烦。
|
14
3dwelcome 2022-03-31 12:24:07 +08:00
@singerll electron 不垃圾的,就是一个 chrome 浏览器内核+nodejs 的合体。
不卡,可以用 wasm 替代 js 来运行逻辑。 不顿,可以用 websocket 长连接替代传统 http restapi 。 要说唯一的缺点,那可能确实体积有点大。 |
15
zxCoder OP @ysc3839 啊 原始需求就是要做一个 windows 桌面应用(也会考虑跨平台,但不是最急需的),然后很喜欢 win11 的 ui 风格,就不知道现在 windows 的原生开发是不是直接用自带的组件就是那个样子。
如果需要自己写样式或者用第三方 ui 库就有点麻烦了,不如前端的生态丰富 |
16
ysc3839 2022-03-31 12:42:07 +08:00 via Android
@zxCoder 一定要原生(WinUI)且跨平台的话大概只能使用 React Native 。建议考虑清楚跨平台重要还是原生风格重要。
|
17
leyviw 2022-03-31 12:47:44 +08:00 via iPhone
Electron 或 cef
|
18
singerll 2022-03-31 13:07:54 +08:00 2
@3dwelcome 我并没有说 electron 技术垃圾,我说的是用户体验垃圾,注意是用户体验不是开发者体验。
什么 wasm 、websocket 的再快,也需要网络加载时间,跟原生 ui 加载根本不一个等级。 况且他用啥技术我根本不关心,我是以一个普通用户的角度来评价 electron 的桌面应用,目前为止用的 electron 写的应用,根本就没见过一个不卡顿的,就连优化最好的 vscode ,天生都有一种卡顿的感觉。 至于体积大,确实是缺点,但肯定不是唯一的缺点。 |
19
MakHoCheung 2022-03-31 13:26:16 +08:00
@zxCoder 现在最新的不是 Windows SDK + WinUI3 吗,还有即将到来的可以跨平台的 MAUI ,想到用 Electron 为啥不用 Compose for Desktop
|
20
zxCoder OP @3dwelcome 换了个第三方的打包工具总算成了,弄了个 helloworld ,安装包 120+M ,安装完 350+M 哈哈哈确实够大的
|
21
icyalala 2022-03-31 13:32:10 +08:00
原生现在无非就是 WPF 、WinForm 、QT ,你想要的基础组件都有。
Electron 的问题是:它只对开发者友好,但不是所有开发者都能达到 VSCode 团队的水平,因此它对用户不友好。 |
22
wzwb 2022-03-31 14:03:03 +08:00 via Android
可以试试 Tauri ,比 Electron 小很多
|
23
woxihejinghao 2022-03-31 14:07:06 +08:00
建议了这么多。为啥没有建议 flutter 的
|
24
lower 2022-03-31 14:12:23 +08:00
webview2
|
26
pengtdyd 2022-03-31 15:30:12 +08:00
@woxihejinghao 现在用 flutter desktop 绝对是个天坑!!!我觉的还是 electron 更好,生态好!至于原生的开发框架,我不是很推荐,因为时代在发展,跟随主流才能更好的发展。
|
27
ysc3839 2022-03-31 16:02:38 +08:00 1
Win11 并没有使用 WPF 来开发界面,WPF 默认的界面风格也和 Win11 的原生风格相差很大,你需要使用第三方的组件库才能得到类似 Win11 的风格。
至于那堆名词,WinUI 和 C# 或 .NET 没有关系,其他都和 C# 或 .NET 有关系。 |
28
ITACHIJAMES 2022-03-31 19:35:48 +08:00
Eletron 水平一般的真的很难做好,卡,臃肿。
Win 原生开发推荐 WPF ; Blazor 和 Eletron 有点像,可以看作是 Web ; MAUI 是最新的架构,推荐,但可能有坑; Xamrian 已经被代替了不用管; Avalonia 是一个还不错的框架。写 C#你会享受的。 |
29
FrankAdler 2022-03-31 20:52:54 +08:00 via iPhone
win11 才能用 winui3 ,暂时不用考虑,主用 winform 或者 wpf 就行了,考虑到新手上手难度建议先用 winform ,我前段时间从零自学写个小工具,半天就写好了,wpf 感觉稍微难点
|
30
zenghx 2022-03-31 22:37:58 +08:00 via Android
那天看到 flutter for Windows 的宣传视频,貌似可以
|
31
zxCoder OP 话说…有人推荐 pyqt 吗 这跟上面这些框架是一个类型的东西吗?
|
32
bequt 2022-03-31 23:09:58 +08:00
有谁还记得那个 VB6.0
|
33
kingfalse 2022-04-01 07:49:40 +08:00 via Android
Java swt 。。。
|
34
Vaspike 2022-04-01 08:39:34 +08:00
直接 Compose-desktop
|
35
sunbreak 2022-04-01 10:23:03 +08:00 via iPhone 2
楼主最好先说下自己的情况,比如做过什么项目,擅长什么语言和框架
- 擅长 C++,推荐 Qt ,不推荐 Win 的 C++直接开发 - 擅长 C#,推荐 WinUI 2/3 的 UI 层,用 WindowsAppSdk 接口层(兼容 WinForm 和 WPF 框架) - 擅长 Java/Kotlin ,推荐 Compose for Desktop ,JetBrains 出品有保障 - 擅长 TS/JS ,推荐 Electron 或者 ReactNative-Windows ,后者是微软官方支持,其实 Win11 的 Settings 是用 RN-Win 写的 - 其他,推荐 Flutter Windows ,我估计你也不是要开发很复杂的应用(否则就得研究深入研究前面某一个框架) - 不推荐 Tauri ,如果是纯 Rust 团队还行,其他情况 Rust 做 UI 对个人学习压力和画组件速度都不占优 - 如果熟悉 Go ,甚至可以试试 GoVCL 利益相关:主要做移动跨平台架构,但也对接过不少桌面需求 |
36
zxCoder OP @sunbreak 情况就是又菜要求还高.... 是个逻辑还比较复杂的应用,想弄好看点,但是也想要性能稍微好点。 自己的话没有特别擅长的语言,反正语法都差不多能写,主要就是一些配置会比较复杂难懂一些。考虑到逻辑需求比较多,所以排除了 c++ rust go
剩下的 winform 试了下,主要就是一个问题,太丑哈哈,compose for desktop ,也试了下,感觉相比 c#没什么优势,electron 是包太大,而且也蛮复杂的,跟写 web 也不太一样。 |
37
sunbreak 2022-04-01 15:04:45 +08:00
|
38
youyouyou0123456 2022-04-01 16:13:18 +08:00
会啥用啥。nanui 看了一眼似乎就是 winform 嵌套 cef ,就是在 winform 中放了个浏览器。
我 wpf 开发的项目比较多,我一般都是维护自己一套控件库,不过如果你想直接用别人的控件库 https://github.com/Carlos487/awesome-wpf 可以在这个 github 里面找找,还是有很多开箱即用控件库的。 对 UI 和开发效率有要求,就不要用 winform ,qt 。 如果项目复杂且对性能,文件大小有要求,就不要用 web 相关的技术做桌面端。 如果想跨平台,就用 web 相关技术做桌面端。 如果开发时间有要求,就要需要用成熟的技术,ReactNative-Windows 、WinUI 3 、Blazor 等,有的技术很新,有的很少人用,中文文档基本没有,英文文档也不够全,遇到难题估计要靠自己踩坑。 |