Electron 太慢 CEF 太麻烦 索性我现在界面都用网站,同时起一个本地服务,然后有什么浏览器无法执行操作,通过 http 请求发送到服务交由它执行,感觉现在这样最舒服,不知道你们有没有什么建议。
1
seakingii 2021-06-07 19:47:43 +08:00 1
winform 最简单..
|
2
hronro 2021-06-07 19:56:41 +08:00
试试 Tauri ?
https://tauri.studio |
3
Huelse 2021-06-07 20:01:44 +08:00
.NET with chrome
|
4
flyhaozi 2021-06-07 20:04:39 +08:00
windows 可以用 WebView2
|
5
SuperMild 2021-06-07 20:13:37 +08:00 1
我就是这样做了,为了省力,舒服,就用网页做 GUI 。最大的缺点是用户在心理上很不接受这种方式,别看 V 站好像很多人讨厌 Electron,但现实是很多人宁愿下载几十 M 文件,宁愿启动慢,也不愿用普通网页界面。
|
6
kerro1990 2021-06-07 20:16:59 +08:00
其实 Electron 还是很舒服的,比普通网页好用多了,可以自定义很多浏览器没有的功能
|
7
3dwelcome 2021-06-07 22:16:43 +08:00 1
figma 就是楼主说的架构,纯网页内容,但是本地有一个执行文件,就只有一个 EXE,监听本地三个 http 端口。
如果网页需要调用 win32 api 之类的,就直接往代理 exe 发送 http 请求。 |
8
minami 2021-06-07 22:38:18 +08:00
其实我很喜欢 sciter 的技术路线,可惜项目去年众筹开源失败了
|
9
rekulas 2021-06-07 22:43:26 +08:00
electron 并不慢,优化下使用方式是不是有问题
目前个人感觉除了内存占用问题其他方面都优于其他方案 |
10
xieqiqiang00 2021-06-07 23:14:12 +08:00
ActiveX
|
11
BingoXuan 2021-06-07 23:18:33 +08:00 1
pywebview
|
12
BeautifulSoap 2021-06-07 23:29:37 +08:00 via Android
electron 这东西想用好很难。直接看 electron 用得最好的那几个软件:vscode,discord 就行了,有几个用 electron 的能把软件用得像这些软件一样好呢
|
13
charlie21 2021-06-07 23:32:12 +08:00
这就是所谓的 大厂开源出来你也玩不转的东西
|
14
EPr2hh6LADQWqRVH 2021-06-07 23:35:43 +08:00 8
???
迷惑行为,难道你的浏览器不占 CPU 和内存不是一个 Chromium 吗。。。 你这几个东西加起来不就是一个 Electron 吗。。。 凭啥你逻辑放 Electron 的 Chromium 里面就慢了,放浏览器的 Chromium 里面就快了。。。 |
15
loginbygoogle 2021-06-08 00:12:48 +08:00
flutter 一把梭
|
17
muzuiget 2021-06-08 05:49:59 +08:00
对,我也喜欢这么做,Electron 优点无非就是能直接访问文件系统,比如操作大文件可以随机读写,节省内存,用服务器方式就得不停复制(要不自己定制协议曲线实现),不过新版 Chrome 开始支持 File System API 了,也就能直接随机读写了。
|
18
kingfalse 2021-06-08 07:32:19 +08:00 via Android
jxbrowser 可以试试
|
19
yolee599 2021-06-08 09:27:35 +08:00 via Android
electron 很吃内存啊
|
20
SmiteChow 2021-06-08 09:28:23 +08:00
客户端还是不要套了,要么直接 pwa,要么直接 native
|
21
Rwing 2021-06-08 09:33:21 +08:00
winform wpf maui
|
22
hazardous 2021-06-08 09:41:04 +08:00
把 gui 做成 pwa 安装后就跟 electron 一样了。不过怎么做到启动 exe 的时候打开 pwa 应用这个还没调查过。
|
23
edk24 2021-06-08 09:42:32 +08:00
wke miniblink 这一类也可自己绑定函数实现自定义 js,是一个不错的选择。优点大小只有 10MB,缺点是 wke 开源在 2010 年后就没有更新了, 只能支持少量 html5, 如果熟悉 html4 写起来还是舒服的
|
24
hazardous 2021-06-08 09:44:22 +08:00
@avastms 因为用户认为浏览器启动时间不算在你的应用启动时间里,况且大部分时间浏览器早就开着了,只是打开个新标签页而已。
|
25
edk24 2021-06-08 09:45:25 +08:00
@edk24 wke 还有优点是自己带 webkit 渲染,不会说 win7 就用 ie 内核 win10 就用 edge 省去兼容多个浏览器内核的操作。 这一点比 pywebview 好
|
26
ligiggy 2021-06-08 09:48:13 +08:00
建议自己先做出来一个 demo 给大家看看
|
27
grewer 2021-06-08 09:53:19 +08:00
同推 Tauri
|
28
ysc3839 2021-06-08 10:07:38 +08:00 via Android
@edk24 我觉得 miniblink 功能上做得很好,可惜作者人为地把项目受众限制在了中文用户中,整个项目充斥着中文,并没有考虑国际化。
我甚至觉得 CEF 的作者技术是不如 miniblink 的,因为 CEF 并不懂得精简内核。CEF 之所以流行可能只是因为它国际化做得好。 |
29
g00001 2021-06-08 10:13:31 +08:00
Electron 不但是体积大,多进程架构交互很麻烦,以前有个 remote 稍微缓解了一点,现在又说 remote 有问题,remote 慢一万倍,用 remote 政冶不正确。如果是 Windows 平台(其实桌面软件非 Windows 平台的市场份额小到基本可以忽略),换个思路利用 aardio 可以在任意网页浏览器里调用本地函数,支持微信浏览器这些 。
第一步:在网页里引入 aardio.js ,JavaScrip 这边的代码: import aardio from 'aardio'; aardio.test("这是网页调用 aardio 的参数",1122); 第二步:在 aardio 里加上代码: import web.rpc.externalServer; var externalServer = web.rpc.externalServer(); //导出网页可调用的函数 externalServer.external = { test = function(...){ winform.edit.print("external.test 被网页调用",...) } } 非常简单 ,完整代码参考 aardio 自带范例( web 应用->rpc 目录),类似的 aardio 标准库还提供 chrome.app 可以调用系统自带的 Chrome( 兼容 Edge 等浏览器 ) 制作软件界面,方法跟上面类似,只要在网页引入 aardio.js 就可以。 aardio 里其他一些浏览器支持库 1 、web.sysView:基于 WIN10 系统自带的 WebView1,Chromium Edge 内核,好用体积小。 2 、web.view:基于微软 WebView2,共享运行库,最新 Chromium Edge 内核,非常好用,支持导出 COM 对象,比 Electron 那啥 remote 简洁太多了。 3 、web.form: 基于已经普及的 IE11 内核组件(系统组件,不受微软移除 IE 浏览器影响),支持 React,系统自带,占用体积为 0,最大的优势是 COM 接口非常简洁。 4 、web.sciter: 基于 Sciter JS , 支持新新的 ES6 语法,体积迷你,专用于 桌面 UI 浏览器组件,非常好用。 4 、web.layout: 基于 HTMLayout , 专用于 桌面 UI 浏览器组件,非常好用。 6 、web.blink: 基于 MiniBlink,精简的 Chromium 内核,体积非常小,提供了丰富的接口. 7 、web.kit: 基于精简版开源 WebKit( WKE ) , 全积比 MiniBlink 还要小。 8 、web.cef3: CEF3 的 ActiveX 组件。 9 、electron.app: 这个是对 Electron 封装了一层,所有使用 electron.app 的软件共享一个运行库,所以生成的 EXE 可以极小,并且可以将 Electron 作为子窗口嵌入原生界面,不必全部依赖 Electron 。 其实可以替代 Electron 的方案很多,不是每个软件都需要 Electron,或者说其实很多软件并不需要过于依赖浏览器,例如开源软件 wubiLex,功能非常多,界面也不错,但下载包体积只有惊人的 900KB,整个界面基于 aardio 中开源的 plus 控件实现。 |
30
no1xsyzy 2021-06-08 10:21:34 +08:00
QWebEngine*(
战网的客户端是 Qt + Vue (具体用的是 QWebEngine 还是 QWebView 就没深究) |
31
Leon6868 2021-06-08 11:09:48 +08:00
@ysc3839 #28 cef 是把 chromium 直接嵌入软件,目标是在桌面软件中展示网页,miniblink 的设计目标是精简 chromium,设计一个 UI 渲染器。两个产品设计思路不同,直接对比不太恰当。
|
32
ICU 2021-06-08 13:07:54 +08:00
我投 QT 一票(手动滑稽)
|
33
paoqi2048 2021-06-08 14:00:45 +08:00
可以看一眼 Qt
|
34
danieladu 2021-06-08 14:32:57 +08:00
可以尝试 webview2
|
35
ysc3839 2021-06-08 15:25:23 +08:00 via Android
@Leon6868 我不认同,实际上 Electron 出来之前就有用 CEF 做界面的程序了,比如 Adobe 的 Brackets 。
许多程序也用 Qt 的 WebView 来做界面,也不见 Qt 进行什么裁剪。 |
36
hongweiliuruige 2021-06-08 15:29:58 +08:00
英雄联盟客户端就是这么做的,
|
39
supermoonie 2021-06-08 19:34:22 +08:00 via iPhone
我用的 jcef
|
40
Charod 2021-06-09 09:30:04 +08:00
@hongweiliuruige 就登录客户端 wg 才是,主端就不是了
|
41
hongweiliuruige 2021-06-09 10:01:37 +08:00
@Charod 进去的客户端也是啊
|
42
hongweiliuruige 2021-06-09 10:02:30 +08:00
@Charod 你试试通过网页 url 都能访问
|
43
bthulu 2021-06-09 17:55:13 +08:00
用 unity3d 啊, 跨平台, 性能也好
|
45
sunbreak 2021-06-10 08:55:02 +08:00
可以考虑用 Flutter Desktop
|