2024 年了,兄弟们说说用 Tauri 遇到的哪些坑

299 天前
ninjaJ  ninjaJ

目前我的主力桌面端开发框架用 javafx ,简单点的用 electron ,但是各自有各自的缺点。

我司开发的主要是工业软件,涉及到串口通信等硬件交互,IO 密集、计算密集。但是我又很想用前端技术栈把 UI 分离出来( PS:原生桌面框架 UI 样式不好写--不仅限于对齐、窗口自适应、flex 等等,各种绑定事件样板代码,写一个软件大部分时间都在写这些东西),可能主要还是已经习惯了前端技术栈那一套丰富的生态和灵活性。

选了一大圈好像还是基于 rust 的 Tauri 对我胃口,就是不知道它现在怎么样了,还有那么多坑吗?

7468 次点击
所在节点   程序员  程序员
44 条回复
RogerL
RogerL
298 天前
等 2.0 吧,感觉 2.0 改动太多了
8520ccc
8520ccc
298 天前
真的没必要 tauri 对于旧版系统支持太拉了 无脑 electron

而且很多功能都不支持 生态不完善。。
mayli
mayli
298 天前
@ZField 技术栈过于先进了, 考虑下传统的 imgui?
xling
xling
298 天前
运行不起来
xiaocaiji111
xiaocaiji111
298 天前
@ninjaJ 是的,javafx 一般都是一些类似工具类的东西再用,比如 dbeaver 啥的这种
YetToCome
YetToCome
298 天前
涉及硬件最好不要轻易换技术栈,转换的坑短时间是填不上的。
jetbrains 那一套 Compose multiplatform 除了生态比较差以外,基本上是可用的
hhacker
hhacker
298 天前
尝鲜过 tauri, 最终还是回到 electron, 最终你想要的功能都是 tauri 没有但是 electron 有的
ninjaJ
ninjaJ
298 天前
@lisongeee 你的回答,戳中了我的心巴
xclidongbo
xclidongbo
298 天前
动了。这就 electron
maplelin
maplelin
298 天前
用 vue 和 react 开发 webview 没法用对应的开发者工具浏览器扩展
ruchuby
ruchuby
298 天前
只要你不需要调用太多窗口、系统 API ,那 Tauri 完全可以代替 Electron 。我觉得目前毕竟麻烦的就是系统相关 API 的支持差一点。

可以看看我的 Tauri+Vue3 项目,用 Scrcpy Mask 像模拟器一样用鼠标键盘控制 Android 设备,基于 Tarui & Rust 开发的跨平台客户端: https://github.com/AkiChase/scrcpy-mask
dongdong12345
dongdong12345
298 天前
tauri 还挺好用的
1una0bserver
1una0bserver
298 天前
其实用 compose multiplatform 感觉是最稳妥的,都有 Java fx 代码了,迁移到 compose 绝对方便,而且也支持部分热重载。不过看你踌躇满志的样子,其实心里早就想拿 tauri+rust 重造轮子了吧?既然如此不妨试试,试一遍就知道了。不过仍然建议只要不是 UI 层的东西老老实实用 rust 写,少用 js ,小心埋 cve 。也可以考虑考虑编译到 wasm 的一些框架。还有远离系统菜单和托盘,这玩意经常出问题,不管是 kmp 还是 Web 都是。
thtznet
thtznet
298 天前
工业软件首选 C#,MAUI 一把梭
catamaran
catamaran
298 天前
desktop application ,为啥不用 c#?
l1xnan
l1xnan
298 天前
纯写界面没啥坑,能在 rust 解决的也还好,就是中间如果你想突破 webview 的限制的时候各种坑,tauri 没有多少修改空间
lisxour
lisxour
298 天前
@8520ccc 因为 tauri 是直接调用系统自带浏览器内核,这种方案优缺点都非常明显
ninjaJ
ninjaJ
297 天前
@1una0bserver
1 、关于兼容性,我会要求客户操作系统不低于 win10 。
2 、不会有太多的窗口创建和销毁。

补充说明一下:UI 层面主要是用户填写参数和实时数据/图表的刷新。为什么对 web 有那么大的需求呢?因为我的目标是构建一个灵活的产品架构,第一层是大量组合式、动态(比如动态列表)的前端交互面板;第二层是中间层,将前端的数据结构翻译成底层的执行命令;第三层是控制部分。通过这种方式将多参数、多任务、多设备统一起来,只需要一个客户端,用户可以通过这种组合式交互执行一系列的复杂控制。

那么虽然我的核心工作在第一层和第二层,但是工作量却在第三层,我希望提升的是这一部分。electron 无法支撑我的第一层,其他的选型无法满足我的第三层。

我另外还有 2 个问题有:
1 、我的实时高频( 10ms 级)数据从 rust 传递到 webview 有没有性能问题,比如时延以及导致的阻塞。tauri 是如何实现 rust 和 js 相互调用的。
2 、诸位所说的 webview 的坑除了兼容性,还有哪些?大量数据图表的性能问题是否存在(不过这个我有数据层面的优化算法)? webview 长期运行是否会越来越卡(对 GC 又爱又恨)?
ninjaJ
297 天前
`那么虽然我的核心工作在第一层和第二层,但是工作量却在第三层,我希望提升的是这一部分。electron 无法支撑我的第一层,其他的选型无法满足我的第三层。`
抱歉这段话的第一和第三层说反了 -> 核心工作在硬件侧,即第三层,electron 无法支撑。而工作量在视图层,即第一层,其他选项无法满足。
zhouyg
296 天前
第三层为啥不写个单独的客户端,然后跟第一层第二层通过 IO 等方式进行调用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1040867

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX