用过 Electron/CEF 这些,感觉不太行

2021-06-07 19:34:59 +08:00
 darknoll

Electron 太慢 CEF 太麻烦 索性我现在界面都用网站,同时起一个本地服务,然后有什么浏览器无法执行操作,通过 http 请求发送到服务交由它执行,感觉现在这样最舒服,不知道你们有没有什么建议。

8075 次点击
所在节点    程序员
45 条回复
Rwing
2021-06-08 09:33:21 +08:00
winform wpf maui
hazardous
2021-06-08 09:41:04 +08:00
把 gui 做成 pwa 安装后就跟 electron 一样了。不过怎么做到启动 exe 的时候打开 pwa 应用这个还没调查过。
edk24
2021-06-08 09:42:32 +08:00
wke miniblink 这一类也可自己绑定函数实现自定义 js,是一个不错的选择。优点大小只有 10MB,缺点是 wke 开源在 2010 年后就没有更新了, 只能支持少量 html5, 如果熟悉 html4 写起来还是舒服的
hazardous
2021-06-08 09:44:22 +08:00
@avastms 因为用户认为浏览器启动时间不算在你的应用启动时间里,况且大部分时间浏览器早就开着了,只是打开个新标签页而已。
edk24
2021-06-08 09:45:25 +08:00
@edk24 wke 还有优点是自己带 webkit 渲染,不会说 win7 就用 ie 内核 win10 就用 edge 省去兼容多个浏览器内核的操作。 这一点比 pywebview 好
ligiggy
2021-06-08 09:48:13 +08:00
建议自己先做出来一个 demo 给大家看看
grewer
2021-06-08 09:53:19 +08:00
同推 Tauri
ysc3839
2021-06-08 10:07:38 +08:00
@edk24 我觉得 miniblink 功能上做得很好,可惜作者人为地把项目受众限制在了中文用户中,整个项目充斥着中文,并没有考虑国际化。
我甚至觉得 CEF 的作者技术是不如 miniblink 的,因为 CEF 并不懂得精简内核。CEF 之所以流行可能只是因为它国际化做得好。
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 控件实现。
no1xsyzy
2021-06-08 10:21:34 +08:00
QWebEngine*(

战网的客户端是 Qt + Vue (具体用的是 QWebEngine 还是 QWebView 就没深究)
Leon6868
2021-06-08 11:09:48 +08:00
@ysc3839 #28 cef 是把 chromium 直接嵌入软件,目标是在桌面软件中展示网页,miniblink 的设计目标是精简 chromium,设计一个 UI 渲染器。两个产品设计思路不同,直接对比不太恰当。
ICU
2021-06-08 13:07:54 +08:00
我投 QT 一票(手动滑稽)
paoqi2048
2021-06-08 14:00:45 +08:00
可以看一眼 Qt
danieladu
2021-06-08 14:32:57 +08:00
可以尝试 webview2
ysc3839
2021-06-08 15:25:23 +08:00
@Leon6868 我不认同,实际上 Electron 出来之前就有用 CEF 做界面的程序了,比如 Adobe 的 Brackets 。
许多程序也用 Qt 的 WebView 来做界面,也不见 Qt 进行什么裁剪。
hongweiliuruige
2021-06-08 15:29:58 +08:00
英雄联盟客户端就是这么做的,
newmlp
2021-06-08 18:03:04 +08:00
@ysc3839 qt 那个 web engine 压缩后只有 25M
Actrace
2021-06-08 19:09:53 +08:00
@no1xsyzy 战网客户端说真的,卡得不要太惨了。
supermoonie
2021-06-08 19:34:22 +08:00
我用的 jcef
Charod
2021-06-09 09:30:04 +08:00
@hongweiliuruige 就登录客户端 wg 才是,主端就不是了

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

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

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

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

© 2021 V2EX