是否应该尝试使用 Qt QML 重写 Electron 应用。

10 小时 43 分钟前
 vfs

正如之前在 ref: https://www.v2ex.com/t/1144403#reply14 帖子中所提到的,我自己写了一个 S3 客户端,使用 Electron 作为 UI ,c++ 写的网络库。 目前已经基本完成。

但是最近遇到一个问题: 当我的远程“目录”中文件数量较多的时候,UI 会卡死。原因是我的 UI 中没有在 Table 中使用虚拟化技术。 网上找了一圈,目前 shadcn ui table 的 tanstack-virtualizer 一起工作的例子还没找见,去 shadcn ui 官方 issue 看了一下,有人问过类似问题,但是很长时间了依然没有解决方案。 这只是个引子,这里不讨论如何解决这个问题了。

所以最近在考虑是否应该使用 Qt QML 来重写我的这个工具, 主要有以下考虑:

  1. 我个人对于 Web 技术的掌握非常浅,大部分事件依赖 AI 给我的方案。AI 解决不了的,大概率我也解决不了

  2. Electron 有点儿吃内存,打包大小也有些大。 感觉对与我这种工具来说,有点儿太重了。

  3. 我的 c++ 库暴露成 js 需要手动编写 napi wrapper ,也有点儿繁琐

4 )但是对于 QML 我也需要重新学习,但是预期这个性能会好很多。

5 )还多多少考虑到 nodejs/js 中依赖太多,水平质量层次不齐。

想知道,这里的大佬们如何看待这个问题。 提前谢过!

900 次点击
所在节点    程序员
21 条回复
NoNewWorld
10 小时 40 分钟前
闲的话,可以试试
C64NRD
10 小时 38 分钟前
既然你不擅长 web 技术,那也不必犹豫了,just do it!
spritecn
10 小时 31 分钟前
@NoNewWorld 写 s3 客户端的人应该不忙
weixind
10 小时 24 分钟前
写都写完了,迁移的收益其实不明显。

分页 + 搜索 或者上拉加载下一页就行了。没太必要传输所有的文件数据。
layxy
10 小时 20 分钟前
虚拟列表的性能并不差,可以用支持虚拟列表的 ui 库试下,比如 vxe-table
x007xyzabc
10 小时 13 分钟前
是我的话,选择自己实现支持 tanstack-virtualizer 的表格
iugo
9 小时 58 分钟前
Web 的生态非常丰富, 迁移到 Qt 可能有依赖相关的问题.
masterclock
9 小时 57 分钟前
QML 这种神经病还是算了吧
liaohongxing
9 小时 53 分钟前
Web 大数据可以虚拟列表,但是看你会 c++ ,建议转 QT
zhzy
9 小时 52 分钟前
涉及到远程目录感觉问题应该不在 Electron ,QML 也没什么生态,建议不要改了,重新设计一下 UI 吧
liuliuliuliu
8 小时 59 分钟前
QT 也是个坑啊,桌面 UI 这块还是 .net 吧,跨平台,原生编译,没啥缺点了
abc0123xyz
8 小时 46 分钟前
.net 吧,简单
wobuhuicode
8 小时 3 分钟前
这是技术设计问题,又不是性能问题。直接渲染长列表,大 Table ,换谁来都卡。要说 QTableView 本身有虚拟化,但 delegate 写得不好也是卡。
colourfulsai
7 小时 48 分钟前
不跨平台考虑下 WPF 吧。现有的 C++代码也可以用 C++/CLI 快速复用。
vfs
6 小时 49 分钟前
@NoNewWorld 啊,虽然是个人业余的小项目,但是时间还没多到在 UI 上花费那么多功夫来尝试,还是算了,继续用 Electron 吧,找找解决方案。
vfs
6 小时 48 分钟前
@spritecn 业余项目,说不上忙,但是也不想把时间都花在 UI 上。。。
vfs
6 小时 39 分钟前
@masterclock 赞成,之前再另外的项目中尝试过,确实不是很理想。 这里提这样的问题还有一点考虑是:Qt QML 更接近 c++, 不需要 napi wrapper ,调试也更方便一些,但是短板很明显,没有现成可用的 UI 库。
vfs
6 小时 39 分钟前
@weixind 是啊,自己考虑了好几天,拿不定主意,这里才问的。 现在定下来了,继续 web 技术栈干
vfs
6 小时 36 分钟前
@wobuhuicode qml 中应该最后还是有一层和 web 相同的 js 引擎,之前已经修复了一个 c++ 到 js 传递数据导致性能低下的问题。 这方面来说,应该两者面临的问题是一样的
BingoXuan
3 小时 42 分钟前
用 ai 做虚拟 table 应该很容易。最近我用 Gemini 3 Pro 就写了 WEBGL2 加速的绘图库。每秒刷新 1.5M 数据点都能保持 60fps (但 WEBGL 真的性能差,WebGPU 又不成气候)

用了 c++,不如尝试一下 c 的 webview 。可以直接 bind c function

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

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

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

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

© 2021 V2EX