桌面软件开发 2022 年 用啥技术栈?

2022-09-15 20:20:21 +08:00
 2NUT
公司要写个内部工具,简单讲就是读某批文件,然后提取处理后用图表展示出来;不兼容平台没关系,99.99%是 windows 。

请教用什么技术栈方便?

我思考了下 electron / qt / flutter

flutter dart 不会先排除; qt 写过, 前端技术栈也会用;有点冲动想试试 electron , 请教这个比 qml 方便么,主要考察 是否容易美化,是否容易集成数据可视化;

如果用 electron ,会采用前后端的模式,核心处理代码用 c++,然后和前端 electron 通信;如果 qt 那就是 c++ 单体了。

先谢谢大家!
7427 次点击
所在节点    问与答
59 条回复
Jirajine
2022-09-16 02:09:33 +08:00
electron 之类的,根本没必要。你这需求哪里有做成 app 的需求了?直接起个本地 HTTP 服务,糊个前端界面搁浏览器里打开不就完事。
imycc
2022-09-16 03:12:02 +08:00
你这个需求,不是搞个内部系统方便一点吗,给个上传文件的接口,处理完用网页展示即可,省去应用打包和更新的负担。
mxT52CRuqR6o5
2022-09-16 03:21:21 +08:00
数据可视化的话,web 技术栈的平台可能确实有些优势
wangningkai
2022-09-16 06:12:46 +08:00
如果会 go 的话,wails 也可以考虑
ShinichiYao
2022-09-16 07:49:24 +08:00
vb 拖几个控件的事
villivateur
2022-09-16 08:29:17 +08:00
其实你可以学一学 WPF ,如果有前端开发经验的话,真的非常简单, .NET 开发现在非常友好
wuxiaoqing234
2022-09-16 08:43:04 +08:00
@villivateur wpf 那成熟度跟 react 没法比吧。。。 是我选我也用 html+css +ant design
villivateur
2022-09-16 08:55:02 +08:00
@wuxiaoqing234 OP 的环境主要是 Windows ,WPF 的成熟度比 React 不知道高到哪里去了
villivateur
2022-09-16 08:55:49 +08:00
@villivateur 而且 C# 调用 C++ 的库也非常方便
tairan2006
2022-09-16 08:57:01 +08:00
纯 windows 肯定 winform/wpf 了…甚至用 vb 都特么可以。
god7d
2022-09-16 08:59:58 +08:00
首选 winform ,论成熟的话这已经快要踏进坟墓了,论上手速度和开发速度,只要不是深入开发,拖拽控件相信一下午就能上手,一小时就能完成一些一般难度的界面。

缺点就是界面丑了点,适配比较差,不过你开发的是内部工具估计也不在意这些,winform 只要自己愿意花时间,也是可以做的很漂亮的
wuxiaoqing234
2022-09-16 09:13:19 +08:00
@villivateur wpf 那 xml mvvm... op 的需求明显是 etl ,可视化处理 ,需要调用啥 c++库。echart, ant chart 这些不香吗
g00001
2022-09-16 09:18:47 +08:00
Electron 里弄 C++ , 那会很累的。
Electron 最要命的还不是体积大,你用 .NET 6 体积也很大,但是后面会越来越小。
Electron 要命的是会越写越大,搞不好就给你来个五六百 MB 。

如果没有跨平台的包袱,WebView2 的优势很多。
而且 WebView2 是共享组件,Win11 自带 ,Win7 这些可以自动安装(速度很快,不用写代码)。

下面写个例子:

先写几句 aardio 代码给 WebView2 套个壳子,不会 aardio 没关系,因为不需要再写更多 aardio 代码了。然后 JavaScript 就可以方便地调用 C++ 写的 DLL 。其他就可以直接用 JavaScript 和 C++ 写了。

import win.ui;
mainForm = win.form(text="WebView2")

//创建浏览器组件
import web.view;
var wb = web.view(mainForm);

//导出本地函数给网页 JavaScript
wb.external = {
callNative = function(str){
return ::User32.MessageBox(0,str,"JavaScript 调用 WinAPI 测试",0)
}
}

//写入网页 HTML
wb.html = /**
<html><head>
<script>
aardio.callNative();
</script>
**/


mainForm.show();
win.loopMessage();


aardio + WebView2 入门教程:
https://www.toutiao.com/article/7138285629548528139/?log_from=c9e52b8622336_1663288878642
Akitora
2022-09-16 09:27:51 +08:00
对 java 熟悉的话,可以试试 jetpack compose
novolunt
2022-09-16 09:45:07 +08:00
BingoXuan
2022-09-16 09:49:17 +08:00
pywebview ,跨平台的 webview ,但没有什么人推荐,可能安全性不够吧。代码逻辑可以用 python 写,需要性能调用 c++。
daliusu
2022-09-16 10:03:38 +08:00
你这个需求,electron 就是最简单的,哪还需要 c++,electron 可以直接调用 node 库度,页面 loading 做好点就行了。只是个内部工具,谁在乎性能多好、体积多小呢
darknoll
2022-09-16 10:28:40 +08:00
flutter 要学 dart ,tauri 要学 rust ,electron 要学 node ,没一个省心的。
wdwwtzy
2022-09-16 10:33:27 +08:00
这个需求还使用 winform/wpf 最舒服,其他技术栈坑太多,写着都生气
xieren58
2022-09-16 11:03:22 +08:00
Win 下还得 winform/wpf, 目前我在边学边用 .net6 + wpf

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

https://ex.noerr.eu.org/t/880360

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

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

© 2021 V2EX