V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
darknoll
V2EX  ›  程序员

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

  •  2
     
  •   darknoll · 131 天前 · 4710 次点击
    这是一个创建于 131 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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