[software development] 跨平台原生GUI程序可能的未来-iced
Tofloor
poster avatar
thepoy
deepin
2024-02-05 22:53
Author

晚上试了试,感觉很不错,除了动不动就 breaking 更新,使用 release 版跑不了 examples 外。

但 rust 不像 electron 和 js 友好。

deepin 不考虑一下引入 iced 作为官方推荐的开发框架之一吗?

截图_20240205224912.png

Reply Favorite View the author
All Replies
爱开发
deepin
2024-02-05 23:26
#1

都是玩具…rust 的gui库多着呢…egui,tarui 2也已经beta了

Reply View the author
thepoy
deepin
2024-02-05 23:46
#2
爱开发

都是玩具…rust 的gui库多着呢…egui,tarui 2也已经beta了

gui和原生gui区别很大,egui与iced相比差很多意思,tauri 只是基于系统 webview 的GUI框架,跟前两者更没法比,而且 tauri 对手机的支持不完善,太依赖一些第三方库,不管这些第三方库的质量如何,反正是有就用,导致一些功能离实用还差很多。

最关键的是已经不止一个 linux 发行版使用 iced 开发桌面或程序了,优势很大,未来可期,没准未来能与 QT Pk 一下,毕竟相比 QT 它的证书太TM友好了。

Reply View the author
redmibook
deepin
2024-02-06 00:13
#3

原生 GUI 开发,在 Linux 上至少还有 20 年红利期,WPS 在这方面赚得盆满钵满。

在这期间,Qt 没有对手的。flutter 几乎占齐所有发展的有利条件,但到现在也是个玩具。

Reply View the author
deepin
2024-02-06 01:18
#4

deepin,准备用Qt quick的qml。

Reply View the author
thepoy
deepin
2024-02-06 07:41
#5
redmibook

原生 GUI 开发,在 Linux 上至少还有 20 年红利期,WPS 在这方面赚得盆满钵满。

在这期间,Qt 没有对手的。flutter 几乎占齐所有发展的有利条件,但到现在也是个玩具。

flutter只能是个玩具,dart太垃圾

Reply View the author
DebuggerX
deepin
2024-02-06 11:20
#6
thepoy

flutter只能是个玩具,dart太垃圾

已经很可以了,而且dart是我写代码快10年来,写过的十几种语言中最喜欢的了。

Reply View the author
thepoy
deepin
2024-02-06 11:49
#7
DebuggerX

已经很可以了,而且dart是我写代码快10年来,写过的十几种语言中最喜欢的了。

写一些中小型软件足 flutter 足够,我说 dart 垃圾是针对原生开发而言。

我是不喜欢 dart 的语法,太蛋疼,不如 typescript 远矣,当初要不 flutter 选择 typescript,我可能就会狂吹它了。

Reply View the author
DebuggerX
deepin
2024-02-06 12:40
#8
thepoy

写一些中小型软件足 flutter 足够,我说 dart 垃圾是针对原生开发而言。

我是不喜欢 dart 的语法,太蛋疼,不如 typescript 远矣,当初要不 flutter 选择 typescript,我可能就会狂吹它了。

原生开发从开发难度、可移植性和性价比的角度,都比跨平台方案差远了,这是个取舍问题。

flutter也有很多大型桌面软件在用的,尤其是最近国内外的一些创业项目,完全基于flutter开发桌面应用,效果很惊艳的,比如 https://github.com/reqable/reqable-app/blob/main/README_CN.md 。还有像是钉钉这样把一部分功能和页面用 flutter 来实现的,也有不少。

大概率你不是讨厌 dart 的语法,只是不习惯 flutter 的写法而已,这两者其实完全是两码事,dart在语法层面上可以说是非常“王道”的,几乎所有语法和语言特性都是来自其他主流语言,只是 flutter 用来构建 UI 的模式是让 dart 一层层地嵌套,和一些人“避免嵌套”的固有经验相左。

其实我最喜欢的语言排名,第一是 dart,第二就是 typescript(如果不算天国的ActionScript3),因为确实 ts 的类型很好用,语言表达力也很不错,但是 ts 离不开转译和运行时,适用场景受限,dart 的类型系统虽然没 ts 那么花,但是绝大多数场景完全够用,空安全、泛型、动态类型、继承、mixin、强类型一个不差,aot和jit支持更是大杀招,开发时不用一直转译或者编译,实时就能解释运行看到结果,方便开发调试;开发完了一个命令直接编译成二进制文件就能单文件分发部署,资源占用还很低。

下面是我前两天随手用 dart 写的脚本,作用是我的手机通过usb线连接电脑后自动打开 scrcpy 这个投屏软件,除了主要逻辑,加上重试机制和异常处理,总共也就才不到60行代码,编译成二进制后再写个 desktop 文件放到自启动目录开机自动运行,日常内存占用 2mb 都不到:

image.png

完整代码如下:

carbon.png

Reply View the author
thepoy
deepin
2024-02-06 12:53
#9
DebuggerX

原生开发从开发难度、可移植性和性价比的角度,都比跨平台方案差远了,这是个取舍问题。

flutter也有很多大型桌面软件在用的,尤其是最近国内外的一些创业项目,完全基于flutter开发桌面应用,效果很惊艳的,比如 https://github.com/reqable/reqable-app/blob/main/README_CN.md 。还有像是钉钉这样把一部分功能和页面用 flutter 来实现的,也有不少。

大概率你不是讨厌 dart 的语法,只是不习惯 flutter 的写法而已,这两者其实完全是两码事,dart在语法层面上可以说是非常“王道”的,几乎所有语法和语言特性都是来自其他主流语言,只是 flutter 用来构建 UI 的模式是让 dart 一层层地嵌套,和一些人“避免嵌套”的固有经验相左。

其实我最喜欢的语言排名,第一是 dart,第二就是 typescript(如果不算天国的ActionScript3),因为确实 ts 的类型很好用,语言表达力也很不错,但是 ts 离不开转译和运行时,适用场景受限,dart 的类型系统虽然没 ts 那么花,但是绝大多数场景完全够用,空安全、泛型、动态类型、继承、mixin、强类型一个不差,aot和jit支持更是大杀招,开发时不用一直转译或者编译,实时就能解释运行看到结果,方便开发调试;开发完了一个命令直接编译成二进制文件就能单文件分发部署,资源占用还很低。

下面是我前两天随手用 dart 写的脚本,作用是我的手机通过usb线连接电脑后自动打开 scrcpy 这个投屏软件,除了主要逻辑,加上重试机制和异常处理,总共也就才不到60行代码,编译成二进制后再写个 desktop 文件放到自启动目录开机自动运行,日常内存占用 2mb 都不到:

image.png

完整代码如下:

carbon.png

你说的没错,dart 除了在 flutter 中没有别的开发工具会用,那个嵌套是真得让我感觉不舒服,曾经用 flutter 写过一个小说阅读软件,最终还是因为 dart 的开发体验感对我来说不好而放弃了。

用 typescript 写小工具的前端给我的开发体验更好,现在的 ts 转译成本也不高,虽然不是实时,很也在毫秒级。

但如果有一个工具能够实现所有平台的原生开发那就更好的,目前的 QT 能实现,但证书恶心,刚好看到了 iced 并试了试,我应该会持续关注它,flutter 我是不想碰了,不过华为出的 ArkUI-X 还没体验过,据说是与 flutter 的区别就是将 dart 换成了 typescript。

Reply View the author
DebuggerX
deepin
2024-02-06 15:20
#10
thepoy

你说的没错,dart 除了在 flutter 中没有别的开发工具会用,那个嵌套是真得让我感觉不舒服,曾经用 flutter 写过一个小说阅读软件,最终还是因为 dart 的开发体验感对我来说不好而放弃了。

用 typescript 写小工具的前端给我的开发体验更好,现在的 ts 转译成本也不高,虽然不是实时,很也在毫秒级。

但如果有一个工具能够实现所有平台的原生开发那就更好的,目前的 QT 能实现,但证书恶心,刚好看到了 iced 并试了试,我应该会持续关注它,flutter 我是不想碰了,不过华为出的 ArkUI-X 还没体验过,据说是与 flutter 的区别就是将 dart 换成了 typescript。

我现在除了flutter写移动端、桌面应用和web,还用dart写后端和脚本工具,感觉很爽的

主要还是看使用场景和开发成本,比如写需要分享给别的linux用户的脚本,还是没办法只能用bash,要到一些大型三方库比如selenium这样的,还是得用python,写后端的时候如果是云函数或者worker一类的,肯定还是ts最合适……

ArkUI-X个人不是很看好,也没什么兴趣,感觉这个方案是大量“借鉴”和杂糅的扭曲产物,底层是用C++“借鉴”(抄?翻译?)的flutter实现,上层是基于ts做DSL,实际 UI 写法四不像,差不多是 flutter 、SwiftUI 和 ComposeUI 各抄一点,也不知道是为了“照顾”web开发还是单纯的设计者水平问题,还把一些传统web开发的陋习带了进去,属实是不咋地,技术难度高不高先不说,作为UI方案,技术审美水平是真不行。

Reply View the author