用 html、js、css 写客户端软件,除了 electron 还有哪些方案?

2022-06-07 14:16:54 +08:00
 tctc4869
用 html 、js 、css 写客户端软件,排除除了 electron ,还有哪些方案?

至少能调用 js 读取本地文件的内容

不能跨平台也没关系,能在 windows 或 linux 上跑起来就行,能跨平台那最好不过了。
6969 次点击
所在节点    程序员
58 条回复
mercury233
2022-06-08 09:51:43 +08:00
nodejs 起服务器,ui 放网站里(
jones2000
2022-06-08 13:22:03 +08:00
QT ,CEF
daliusu
2022-06-08 13:23:03 +08:00
@shilianmlxg 我觉得差不多,写 UI 这部分跟网页就没啥区别,只是要跟 electron 通信调用一些底层 api ,这部分更像 node 了
Buges
2022-06-08 13:28:00 +08:00
@ysc3839 Linux 有 qtwebengine 和 webkit2gtk ,取决于后端用的 toolkit 。常见的 tauri/wails 等用 gtk 绘制窗口,用的都是后者,兼容性上不如新版 Windows 上 chromium 内核的 webview 。
zed1018
2022-06-08 13:29:40 +08:00
这个读取本地文件是个什么业务,如果只是让用户选择文件上传之类的,你按网页写,做个 manifest 搞成 pwa app 就行了。
zxCoder
2022-06-08 13:36:07 +08:00
直接写前端,然后打包,然后 c#套个 webview 就行
star7th
2022-06-08 13:39:49 +08:00
@miniblink 你这个项目都不开源了,意味着无法共享生态。只能跟着你们官方走用你们实现的一套轮子。官方上虽然显示轮子组件不少,但用起来还是有小问题的。最重要的是不能及时跟上业界生态同步更新。并且即使是你们自己也不积极维护。更新时间和 issue 回复都非常不及时。若不是对体积有极致需求,真的不建议用 miniblink 。看到 github 的话就有点莫名其妙,因为被黑产使用而闭源。话说 electron 也没有因为黑产使用而闭源啊。当然你们要这么做也行,毕竟是你们开源的。但是我们作为开发者,就拒绝一个封闭的不完善生态了。
star7th
2022-06-08 13:42:56 +08:00
针对本问题,用 html 、js 、css 写客户端软件 ,核心就是前端技术栈,用什么封装根本不重要,所以直接套一个业界最常用的 electron 即可。你摸索一圈后还是发现 electron 靠谱。
uni
2022-06-08 14:20:26 +08:00
试试 pwa ?
C603H6r18Q1mSP9N
2022-06-08 14:25:58 +08:00
看好 tauri
815979670
2022-06-08 14:35:38 +08:00
扯个题外话 有时候想要一些简单的桌面工具 易语言其实也是个选择。。。
learningman
2022-06-08 15:11:49 +08:00
@Bijiabo 如果只是读取本地文件,rn 都不用,js 里面已经有 API 了
Asimov01
2022-06-08 15:53:11 +08:00
PWA 不行么?还能顺便多一个 WEB 端客户端
tctc4869
2022-06-08 20:22:59 +08:00
@zed1018 至少做到 js 把进程内的数据传到到客户端本地的文件中去保存,以及读取本地文件的内容。读取文件的话,浏览器本身也能做到。但浏览器把自身进程内的数据写入到客户端本地文件就不行。
reiji
2022-06-08 23:27:56 +08:00
@tctc4869 也许这个可以将就用一下,一开始需要用户授权文件目录,然后就可以获得读写权限了.https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API
codehz
2022-06-09 10:09:33 +08:00
@tctc4869 倒也不是不可以,chrome 有提供 FileSystem API ,可以打开一个文件夹并写入文件,你可以试用一下 vscode.dev
tctc4869
2022-06-10 09:47:06 +08:00
@DOLLOR 准确的说,是读写本地文件,普通文本文件和数据库级别的文件( sqlite 之类的),至少得知道访问读写的文件在什么地方(能拷贝带走)。

浏览器有一个 IndexedDB 数据库,但访问 api ,是那种通过键值对提取,完全不知道数据库文件在什么地方。
g00001
2022-06-11 12:34:59 +08:00
桌面工具跨平台意义不大,代价却很大。
macOS 与 Linux 加起来所占的桌面市场份额不及已经被遗忘的 Win8 。

WebView2 不但是 Win11 自带,而且兼容 Win7 ,Win10 ,普及率已经很高,而且属于系统共享组件,不用每个程序自带一份。可以生成很小的独立 EXE 文件。WebView2 接口很简洁,可以节省很多代码。一个 aardio 调用 WebView2 执行本地 ping 命令并回显到网页的简单例子:



在 aardio 里还可以直接调用系统自带的 Chrome ,Edge 这些浏览器写界面( 没有会自动安装 )。例如开源软件 edge-TTS-record 就是这样做的,下载体积只有 1 MB:



Miniblink 其实也很不错,体积小,发展多年也很成熟了。其实不开源的东西远比开源的多,开源的东西并不见得就好用。

aardio 中这种浏览器组件还有很多


其实有时候不用网页写界面可能更快。举几个例子:

开源输入法状态跟踪提示工具 ImTip ,整个界面仅用到了 aardio 中的 plus 控件,下载体积仅 591 KB





开源录屏工具 Gif123 ,也只用了 aardio 中的 plus 控件实现界面,下载体积仅 820 KB



开源微软五笔助手 WubiLex ,同样只用到了 aardio 中的 plus 控件,下载体积仅 818KB

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

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

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

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

© 2021 V2EX