本人 JAVA 后端,有一些 react 的前端经验。打算开发一个 mac os 的小工具 app ,想了解下目前的跨平台框架对 desktop 的支持咋样?
关心几点:
能沿用现在技术栈最好,也不很排斥新语言。感谢!
![]() | 1 zhangxzh 2022-08-25 11:21:31 +08:00 Compose for Desktop ?? 做过后端的话, 也不需要学新语言 |
2 kkkkkkhalil 2022-08-25 11:22:19 +08:00 ![]() electron? |
![]() | 3 xiaochong OP typo : flutter |
![]() | 5 dreasky 2022-08-25 11:34:55 +08:00 electron flutter 现在对桌面支持还不太好 还有个 rust 的 tauri |
6 huohei 2022-08-25 11:38:38 +08:00 如果想迁移到移动端,flutter 可以考虑 |
![]() | 7 Vaspike 2022-08-25 11:38:38 +08:00 ![]() 推荐一楼说的 Jetbrains Compose 在这上面我已经产出多个软件,跨平台 Kotlin 走的 jvm 生态没得说,移动端的话,这个框架本身就是 Compose Jetpapck 移植到桌面端的 |
8 zhuweiyou 2022-08-25 11:40:04 +08:00 公司项目还是个人项目? 公司不要用偏门技术,招不到人来接手. |
![]() | 9 Bijiabo 2022-08-25 11:42:51 +08:00 建议明确一下需求,如果涉及到一些非界面相关的技术,例如音频、视频等,可能还要考虑硬件加速等场景,可能跨平台的开发相比选择特定平台相关的技术来说,更加痛苦。 |
10 stoluoyu 2022-08-25 11:54:27 +08:00 最近看到个 wails ,还比较新。 |
![]() | 11 ysc3839 2022-08-25 11:59:39 +08:00 只考虑 Windows 和 macOS 的话可以试试 React Native ,否则建议 Web |
![]() | 12 respawn 2022-08-25 12:09:28 +08:00 ![]() .NET MAUI 仅提供选项 巨硬家的东西有个特色,有挺多人骂,一边骂一边用。 |
![]() | 13 nojsja 2022-08-25 12:11:49 +08:00 有个新框架 tauri 可以了解一下,不过得学 rust ,界面就用 react 的 web 生态 |
![]() | 14 sardina 2022-08-25 12:13:13 +08:00 via iPhone flutter |
15 Scirocco 2022-08-25 12:16:56 +08:00 flutter 我用下来感觉还是移动端为主,就是开发移动端顺便开发一个能用的桌面端这种感觉 |
16 renmu 2022-08-25 12:22:02 +08:00 via Android ![]() electron 就是跨端霸主 |
17 dcsuibian 2022-08-25 12:43:35 +08:00 ![]() /t/861083 从功能实现上来说,那 Electron 应该是第一,毕竟 web 天生的跨平台优势。但是卡,要不是卡也就不需要别的了。 只有追求性能才考虑其它的。如果是 Flutter on Desktop 和 React Native for Windows + macOS 。那还是选前者吧。 1 、这俩都是移动端为主的,桌面端都还不咋样 2 、前者是 Flutter 官方在搞,后者是巨硬在搞而不是 Facebook 本家 3 、React Native 的原理是转成原生组件,安卓和 IOS 的差异已经是个问题了,现在 Windows 和 macOS 再来,不敢想。 |
18 thtznet 2022-08-25 12:50:29 +08:00 ![]() .NET MAUI +1 |
19 mxT52CRuqR6o5 2022-08-25 12:54:37 +08:00 RN 感觉不太行,因为桌面端的支持不是官方的,RN 源头上设计时就不会考虑桌面端的各种特性 相比之下 flutter 的桌面端是官方做的 |
![]() | 20 lozzow 2022-08-25 13:04:07 +08:00 qt ? |
![]() | 21 theohateonion 2022-08-25 13:13:05 +08:00 tarui |
![]() | 22 licoycn 2022-08-25 13:22:25 +08:00 Wails Fyne Electron Tauri Flutter |
![]() | 23 SingeeKing PRO 只有纯桌面端的话,tauri 不二之选 |
24 276562578 2022-08-25 13:23:01 +08:00 只是桌面的话 electron ,加上移动端建议 flutter |
25 当然如果能 web 还是 web |
![]() | 26 EvanQu 2022-08-25 13:33:29 +08:00 ![]() .net 的 maui? |
![]() | 27 icyalala 2022-08-25 13:46:19 +08:00 只考虑桌面端那就 Electron ,前端技术栈,非常成熟,生态完善,只是打包大。 还要考虑移动端,那目前只有 Flutter 看上去能用,但生态不如 Electron 成熟。 其他更不成熟的方案,我看好 Compose ,也是 skia 渲染,能保证平台一致性。至于 tauri ,那又用回系统 WebView 了。。 |
![]() | 28 murmur 2022-08-25 13:48:38 +08:00 你们真用过 flutter 开发的桌面 app 、 |
![]() | 29 sinnosong1 2022-08-25 13:50:45 +08:00 ![]() Maui ,或者 Avaloina 。写 java 的 1 周内学不会 C#可以直接不要干这行了 |
30 zhailei2011 2022-08-25 13:52:34 +08:00 tarui+1 |
![]() | 31 xiaojun996 2022-08-25 14:49:42 +08:00 electron |
![]() | 32 wanguorui123 2022-08-25 14:52:40 +08:00 electron 套壳 |
![]() | 34 elechi 2022-08-25 15:15:43 +08:00 flutter 或 Jetbrains Compose tarui 太新,说不准有啥坑 maui 桌面不行,目前默认不支持 exe 生成 |
![]() | 35 churchill 2022-08-25 15:22:47 +08:00 有没有可能 C++ & ImGui 跨平台+高性能 |
![]() | 36 coolair 2022-08-25 15:25:02 +08:00 ![]() 说实话,不在乎性能可以上 electron ,对性能有要求只有 QT ,其他都不行,花里胡哨+追新技术并不适合做产品,玩玩还可以。。 |
![]() | 37 1daydayde 2022-08-25 17:06:52 +08:00 ![]() 竟然只有 2 个说 Qt 的 |
![]() | 38 murmur 2022-08-25 17:11:47 +08:00 ![]() @0312birdzhang 那毕竟 QT 是真的干活的,QT 可是有 wps 这种级别的软件撑着,我感觉 flutter 这些东西在国内完全是为了绩效而生,他没有 h5 的生态基础,没有 html 、jsx 这些遍历的语法,错过了 app 野蛮发展的时期,等 flutter 吹起来的时候,国内 app 进入减量时代,反倒是小程序嘎嘎爆杀 |
![]() | 39 LindsayZhou 2022-08-25 17:13:12 +08:00 我比较喜欢 QT 一点。 |
![]() | 40 LindsayZhou 2022-08-25 17:16:49 +08:00 ![]() @LindsayZhou 如果去问 archcn 社区的人,估计不会给你推荐 electron ,因为 wayland 的支持现在还不太好,特别是中文输入法,现在我的 chromium 的 fcitx5 中文候选框都乱跑。 (本来想换行的,按到 Ctrl 了,所以分了两条回复) |
![]() | 41 iamqk 2022-08-25 17:19:48 +08:00 似乎有梯子是用 qt 做的,感觉 mac 下凑合用 |
![]() | 42 zjsxwc 2022-08-25 17:20:28 +08:00 |
![]() | 44 zjsxwc 2022-08-25 17:21:21 +08:00 |
45 obwj 2022-08-25 17:24:30 +08:00 flutter |
![]() | 46 whoami9894 2022-08-25 17:26:20 +08:00 |
![]() | 47 flowerpiggy 2022-08-25 17:26:32 +08:00 nw.js |
![]() | 48 zyxk 2022-08-25 17:28:36 +08:00 为什么这么多推荐 tauri 的, 且不说需要学 rust , 10 及以下系统还要装运行库, 这点就不适合小工具了吧. |
49 youxiachai 2022-08-25 17:30:48 +08:00 @murmur flutter 3.0.5 准备走微软应用商店流程上架了 |
50 youxiachai 2022-08-25 17:35:05 +08:00 @murmur 我是上一年看了这篇文章后面试一下用 flutter 做桌面 app https://blog.whidev.com/native-looking-desktop-app-with-flutter/ 真有复杂需求 dart::ffi 其实也可以解决问题..我觉得 flutter 开发桌面端其实问题不大 |
51 temp178 2022-08-25 17:39:52 +08:00 会 Java 的话,感觉可以尝试下 flutter ,dart 和 java 很像 |
![]() | 52 Kasumi20 2022-08-25 18:00:27 +08:00 前后端分离,exe 跑服务,UI 跑在浏览器里 |
![]() | 53 WebKit 2022-08-25 18:18:17 +08:00 via Android Jetbrains Compose 不错 |
![]() | 54 treblex 2022-08-25 18:27:58 +08:00 manjaro gnome wayland 下,flutter dev 运行还是比 gtk 慢一点,空白窗口有差不多 1 秒 |
![]() | 55 santom 2022-08-25 18:34:49 +08:00 如果只是简单的小工具,PWA 怎么样? |
![]() | 56 debuggerx 2022-08-25 18:48:50 +08:00 @murmur https://github.com/debuggerx01/dde_gesture_manager flutter 做的客户端(还有 web 版),dart 写的后端,已经上架 deepin/UOS 的应用商店 |
![]() | 58 duan602728596 2022-08-25 18:54:46 +08:00 ![]() 根据 electron 好几年的开发经验,我推荐 electron ,原因如下: 1. 从数据持久化上来讲,浏览器原生支持 localStorage 、sessionStorage 、IndexedDB 等,不需要在自己引入本地存储的解决方案 2. 开启多线程比较容易,原生 WebWorker 支持 3. 因为你使用了 react ,可以说复杂的界面的切换就很容易了(HashHistory) 4. 打包跨平台,在 mac 上可以编译 mac 、linux 、window 5. 可以在主线程开启子线程,启动其他服务 6. electron 原生支持一些系统功能,比如文件选择器、多窗口等等 7. 可以使用 electron-store 这种来存储相关配置 反正你选择的时候也要考虑到周边的功能,有的时候这些反而会阻碍你的开发 |
![]() | 59 ysc3839 2022-08-25 19:00:57 +08:00 关于 tauri ,我觉得主要问题是要用 Rust 写后端,对前端开发者不友好。 很多人吹 tauri 只是因为它是调用系统 WebView ,不需要自带一个 WebView ,完全没考虑到对前端开发者易用性问题。 个人认为目前市场需要一个 Node.js+系统 WebView 的框架,但可惜并没有人开发。 |
![]() | 60 hst001 2022-08-25 19:13:56 +08:00 ![]() flutter desktop 目前虽说是 stable ,但有些问题还是蛮影响的,比如字体、platform view tauri 从 roadmap 上看,还不够成熟 目前最成熟的应该还是 electron 如果要考虑未来发展,那无疑是 flutter ,背靠大树 |
61 |
![]() | 63 AItsuki 2022-08-25 19:41:32 +08:00 electron, 几乎不用考虑别的了,如果你不想折腾的话。 |
![]() | 64 0xZhangKe 2022-08-25 19:52:24 +08:00 Jetpack Compose |
65 seakingii 2022-08-25 21:19:08 +08:00 ![]() 微软的.Net MAUI 可能会有比较好的发展前景,不过目前还不是很成熟,至少以下两点还不行: 1 Windows : 不能生成单独的一个 EXE 2 Linux : 还不能生成 Linux 的包, 目前只有微软的一个工程师在做探索 目前已经可以生成: 1 Windows 上 MSIX 的安装包 2 Android 3 iOs 4 MacOs |
![]() | 66 xuweifeng1987 2022-08-25 21:42:56 +08:00 有 java 基础,首推 javafx 啊,分分钟就上手了 |
67 fox0001 2022-08-25 21:46:54 +08:00 via Android 本来想玩玩 QT ,只是需要 C++… |
68 nick0x01 2022-08-25 22:37:25 +08:00 当然是 Qt6 ,而且高分辨率适配也做的挺好了 |
69 reallittoma 2022-08-25 22:39:52 +08:00 看下来只有一个人提到 Avalonia ,我觉得它是目前最稳定好用的类 WPF 跨平台方案了。 |
70 duke807 2022-08-25 22:42:12 +08:00 via Android html5 或者 html5 + python 後台 或者 wxWidgets |
![]() | 71 reeco 2022-08-25 23:35:32 +08:00 via iPhone 你在这问不就是盲人摸象吗,有几个人开发过这玩意 |
![]() | 72 Bijiabo 2022-08-25 23:52:45 +08:00 看了需求补充,感觉优先 Electron ,可以尝试 React Native ,绝对不要用 Flutter |
![]() | 73 RickyC 2022-08-26 00:25:14 +08:00 跨端方案 桌面: electron 移动端: flutter 观望中: webview2, maui |
![]() | 74 dixeran 2022-08-26 00:46:32 +08:00 Tauri/Wails/Electron 是一类东西吧..自带浏览器和调用系统浏览器的区别,习惯哪个语言的 binding 选哪个。没有特殊理由不要选 QT ,人家大厂能组自己的控件库,个人开发者在 QT 上折腾 UI 基本上没有做得好看的。 |
75 jones2000 2022-08-26 01:02:03 +08:00 看项目预算了,钱少就上 web 。 预算充足就可以考虑 QT 什么的了。 |
![]() | 76 Vaspike 2022-08-26 08:49:22 +08:00 |
![]() | 77 likeme 2022-08-26 08:53:55 +08:00 用过 electron 开发的的桌面端软件好多,推荐 electron 。 |
78 MeteorCat 2022-08-26 09:07:36 +08:00 via Android electron ,默认跨平台还得开发简单我就选他 |
![]() | 79 murmur 2022-08-26 09:13:47 +08:00 @reeco 网易云音乐,钉钉这些新一批跨平台桌面应用都是 electron 或者类 electron ,不是 electron 也是 cef 不同的是 1 、他们的 cef 或者 electron 有没有魔改过? 2 、除了 cef 或者 electron ,别人自行或者使用的第三方库有多少? 至于 web 部分用什么不重要,先排除一个 flutter ,用 vue 都比 flutter 开发网页应用靠谱 |
80 99999999999 2022-08-26 09:19:24 +08:00 公司用的 qt ,也是为了跨平台。二次开发用 swig 生成其它语言接口 |
![]() | 81 YUyu101 2022-08-26 09:20:11 +08:00 electron 不想折腾 |
82 rocododd 2022-08-26 09:26:27 +08:00 compose +1 |
![]() | 83 zhangxzh 2022-08-26 09:29:02 +08:00 via Android 好厉害,qt 都出来了 |
84 missdeer 2022-08-26 09:31:10 +08:00 居然没人提到 Qt ,我刚刚搜了一下硬盘上的 Qt5Core.dll ,发现腾讯会议,企业微信,罗技,微软 OneDrive 都用到 Qt 了,远超我想像 |
![]() | 86 marcong95 2022-08-26 09:38:55 +08:00 @zyxk #48 好像微软已经通过 Windows Update 推这东西了,刚查了下,我公司的电脑也在几天前的自动装上了。家里那台应该更早,因为家里有用 365 Microsoft 365 Apps 开始提供依赖于 Microsoft Edge WebView2 的新功能或改进功能。将从 2021 年 3 月 8 日开始安装 WebView2 Runtime 。 |
![]() | 87 wakarimasen 2022-08-26 09:40:56 +08:00 via Android 也算是 v 站月经问题了。从你的技术栈出发最舒服的方式就是后台挂个 Java HTTP Server 然后打开 localhost:3000 里面是个 React SPA 如果就是写个小工具足够了。 当然这样的东西要分发就麻烦了,迁移到移动端似乎也不太可行。 |
88 Chenhe 2022-08-26 09:42:56 +08:00 via Android 有点期待 compose desktop 。也有点期待 flutter web 。(真的很不喜欢 js/ts ,学不下去) |
![]() | 89 debuggerx 2022-08-26 09:44:03 +08:00 @murmur 网易云音乐,钉钉 这些能叫新?牛逼。。 移动端 flutter 是稳的,桌面和 web 不好说,但是 electron 肯定要被淘汰的 |
![]() | 90 pkwenda 2022-08-26 09:47:24 +08:00 真的强烈推荐楼主深入调研 flutter ,现在真的不错,万一以后写移动端呢 |
![]() | 92 mh 2022-08-26 09:54:02 +08:00 qt 、electron 路过 |
![]() | 93 debuggerx 2022-08-26 09:56:41 +08:00 @murmur 都是老古董了,而且在 linxu 下都有一堆问题。越是减量市场,还能保持发展的,越是说明优越性。按照你的说法,其实大家都不要写桌面程序了,LZ 也没必要选了,反正没人用 |
94 lijy91 2022-08-26 09:57:03 +08:00 ![]() 我已经为各位填了一年的坑了,用 flutter desktop 的可以看看这里 https://github.com/leanflutter |
![]() | 95 debuggerx 2022-08-26 09:59:38 +08:00 @murmur qt 、electron 、flutter 的桌面应用我都做过,都是小工具级别,都是同时保证三个桌面可用,不会乱说话。哪怕就只是做给自己用,作为开发,我也得选问题少的、写着爽的吧 |
![]() | 96 murmur 2022-08-26 10:01:39 +08:00 @debuggerx 有道理,所以有没有可能,跨平台是最大的问题,比如苹果他自己就不出应用,safari 和 itunes 都不给 windows 更新了,更别提 linux 支持 |
![]() | 98 murmur 2022-08-26 10:12:23 +08:00 ![]() @debuggerx 跨平台是个伪命题,这个词把人忽悠瘸了,应该叫复用,最多是复用多少,尤其是移动端和桌面端复用,这本身就是个难题,界面都得大改 |
![]() | 100 qianlifeng 2022-08-26 10:25:55 +08:00 @lijy91 很赞, 之前就关注了 |