V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
darknoll
V2EX  ›  程序员

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

  •  2
     
  •   darknoll · 2021-06-07 19:34:59 +08:00 · 8475 次点击
    这是一个创建于 1299 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    第 1 条附言  ·  2021-06-08 09:41:36 +08:00
    winform/wpf 啥的不用提了,难看又不能跨平台,不会用微软的技术
    第 2 条附言  ·  2021-06-08 09:44:20 +08:00
    用 web 做界面当然是为了好看啊,不用 native 做界面,麻烦又难看
    45 条回复    2021-06-10 08:55:02 +08:00
    seakingii
        1
    seakingii  
       2021-06-07 19:47:43 +08:00   ❤️ 1
    winform 最简单..
    hronro
        2
    hronro  
       2021-06-07 19:56:41 +08:00
    试试 Tauri ?
    https://tauri.studio
    Huelse
        3
    Huelse  
       2021-06-07 20:01:44 +08:00
    .NET with chrome
    flyhaozi
        4
    flyhaozi  
       2021-06-07 20:04:39 +08:00
    windows 可以用 WebView2
    SuperMild
        5
    SuperMild  
       2021-06-07 20:13:37 +08:00   ❤️ 1
    我就是这样做了,为了省力,舒服,就用网页做 GUI 。最大的缺点是用户在心理上很不接受这种方式,别看 V 站好像很多人讨厌 Electron,但现实是很多人宁愿下载几十 M 文件,宁愿启动慢,也不愿用普通网页界面。
    kerro1990
        6
    kerro1990  
       2021-06-07 20:16:59 +08:00
    其实 Electron 还是很舒服的,比普通网页好用多了,可以自定义很多浏览器没有的功能
    3dwelcome
        7
    3dwelcome  
       2021-06-07 22:16:43 +08:00   ❤️ 1
    figma 就是楼主说的架构,纯网页内容,但是本地有一个执行文件,就只有一个 EXE,监听本地三个 http 端口。

    如果网页需要调用 win32 api 之类的,就直接往代理 exe 发送 http 请求。
    minami
        8
    minami  
       2021-06-07 22:38:18 +08:00
    其实我很喜欢 sciter 的技术路线,可惜项目去年众筹开源失败了
    rekulas
        9
    rekulas  
       2021-06-07 22:43:26 +08:00
    electron 并不慢,优化下使用方式是不是有问题
    目前个人感觉除了内存占用问题其他方面都优于其他方案
    xieqiqiang00
        10
    xieqiqiang00  
       2021-06-07 23:14:12 +08:00
    ActiveX
    BingoXuan
        11
    BingoXuan  
       2021-06-07 23:18:33 +08:00   ❤️ 1
    pywebview
    BeautifulSoap
        12
    BeautifulSoap  
       2021-06-07 23:29:37 +08:00 via Android
    electron 这东西想用好很难。直接看 electron 用得最好的那几个软件:vscode,discord 就行了,有几个用 electron 的能把软件用得像这些软件一样好呢
    charlie21
        13
    charlie21  
       2021-06-07 23:32:12 +08:00
    这就是所谓的 大厂开源出来你也玩不转的东西
    EPr2hh6LADQWqRVH
        14
    EPr2hh6LADQWqRVH  
       2021-06-07 23:35:43 +08:00   ❤️ 8
    ???

    迷惑行为,难道你的浏览器不占 CPU 和内存不是一个 Chromium 吗。。。

    你这几个东西加起来不就是一个 Electron 吗。。。

    凭啥你逻辑放 Electron 的 Chromium 里面就慢了,放浏览器的 Chromium 里面就快了。。。
    loginbygoogle
        15
    loginbygoogle  
       2021-06-08 00:12:48 +08:00
    flutter 一把梭
    EscYezi
        16
    EscYezi  
       2021-06-08 03:08:30 +08:00 via iPhone
    @avastms #14 我觉得是因为把大部分计算工作都放到后端服务里,也许效率会高一些?
    muzuiget
        17
    muzuiget  
       2021-06-08 05:49:59 +08:00
    对,我也喜欢这么做,Electron 优点无非就是能直接访问文件系统,比如操作大文件可以随机读写,节省内存,用服务器方式就得不停复制(要不自己定制协议曲线实现),不过新版 Chrome 开始支持 File System API 了,也就能直接随机读写了。
    kingfalse
        18
    kingfalse  
       2021-06-08 07:32:19 +08:00 via Android
    jxbrowser 可以试试
    yolee599
        19
    yolee599  
       2021-06-08 09:27:35 +08:00 via Android
    electron 很吃内存啊
    SmiteChow
        20
    SmiteChow  
       2021-06-08 09:28:23 +08:00
    客户端还是不要套了,要么直接 pwa,要么直接 native
    Rwing
        21
    Rwing  
       2021-06-08 09:33:21 +08:00
    winform wpf maui
    hazardous
        22
    hazardous  
       2021-06-08 09:41:04 +08:00
    把 gui 做成 pwa 安装后就跟 electron 一样了。不过怎么做到启动 exe 的时候打开 pwa 应用这个还没调查过。
    edk24
        23
    edk24  
       2021-06-08 09:42:32 +08:00
    wke miniblink 这一类也可自己绑定函数实现自定义 js,是一个不错的选择。优点大小只有 10MB,缺点是 wke 开源在 2010 年后就没有更新了, 只能支持少量 html5, 如果熟悉 html4 写起来还是舒服的
    hazardous
        24
    hazardous  
       2021-06-08 09:44:22 +08:00
    @avastms 因为用户认为浏览器启动时间不算在你的应用启动时间里,况且大部分时间浏览器早就开着了,只是打开个新标签页而已。
    edk24
        25
    edk24  
       2021-06-08 09:45:25 +08:00
    @edk24 wke 还有优点是自己带 webkit 渲染,不会说 win7 就用 ie 内核 win10 就用 edge 省去兼容多个浏览器内核的操作。 这一点比 pywebview 好
    ligiggy
        26
    ligiggy  
       2021-06-08 09:48:13 +08:00
    建议自己先做出来一个 demo 给大家看看
    grewer
        27
    grewer  
       2021-06-08 09:53:19 +08:00
    同推 Tauri
    ysc3839
        28
    ysc3839  
       2021-06-08 10:07:38 +08:00 via Android
    @edk24 我觉得 miniblink 功能上做得很好,可惜作者人为地把项目受众限制在了中文用户中,整个项目充斥着中文,并没有考虑国际化。
    我甚至觉得 CEF 的作者技术是不如 miniblink 的,因为 CEF 并不懂得精简内核。CEF 之所以流行可能只是因为它国际化做得好。
    g00001
        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 控件实现。
    no1xsyzy
        30
    no1xsyzy  
       2021-06-08 10:21:34 +08:00
    QWebEngine*(

    战网的客户端是 Qt + Vue (具体用的是 QWebEngine 还是 QWebView 就没深究)
    Leon6868
        31
    Leon6868  
       2021-06-08 11:09:48 +08:00
    @ysc3839 #28 cef 是把 chromium 直接嵌入软件,目标是在桌面软件中展示网页,miniblink 的设计目标是精简 chromium,设计一个 UI 渲染器。两个产品设计思路不同,直接对比不太恰当。
    ICU
        32
    ICU  
       2021-06-08 13:07:54 +08:00
    我投 QT 一票(手动滑稽)
    paoqi2048
        33
    paoqi2048  
       2021-06-08 14:00:45 +08:00
    可以看一眼 Qt
    danieladu
        34
    danieladu  
       2021-06-08 14:32:57 +08:00
    可以尝试 webview2
    ysc3839
        35
    ysc3839  
       2021-06-08 15:25:23 +08:00 via Android
    @Leon6868 我不认同,实际上 Electron 出来之前就有用 CEF 做界面的程序了,比如 Adobe 的 Brackets 。
    许多程序也用 Qt 的 WebView 来做界面,也不见 Qt 进行什么裁剪。
    hongweiliuruige
        36
    hongweiliuruige  
       2021-06-08 15:29:58 +08:00
    英雄联盟客户端就是这么做的,
    newmlp
        37
    newmlp  
       2021-06-08 18:03:04 +08:00
    @ysc3839 qt 那个 web engine 压缩后只有 25M
    Actrace
        38
    Actrace  
       2021-06-08 19:09:53 +08:00
    @no1xsyzy 战网客户端说真的,卡得不要太惨了。
    supermoonie
        39
    supermoonie  
       2021-06-08 19:34:22 +08:00 via iPhone
    我用的 jcef
    Charod
        40
    Charod  
       2021-06-09 09:30:04 +08:00
    @hongweiliuruige 就登录客户端 wg 才是,主端就不是了
    hongweiliuruige
        41
    hongweiliuruige  
       2021-06-09 10:01:37 +08:00
    @Charod 进去的客户端也是啊
    hongweiliuruige
        42
    hongweiliuruige  
       2021-06-09 10:02:30 +08:00
    @Charod 你试试通过网页 url 都能访问
    bthulu
        43
    bthulu  
       2021-06-09 17:55:13 +08:00
    用 unity3d 啊, 跨平台, 性能也好
    edk24
        44
    edk24  
       2021-06-09 21:20:02 +08:00
    @ysc3839 哟 老熟人嘛,余思成大佬 :)
    sunbreak
        45
    sunbreak  
       2021-06-10 08:55:02 +08:00
    可以考虑用 Flutter Desktop
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2851 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 07:34 · PVG 15:34 · LAX 23:34 · JFK 02:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.