V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
gaocc
V2EX  ›  问与答

electron 有使用过这个的兄弟吗?实用不?

  •  1
     
  •   gaocc · 2019-04-02 09:43:51 +08:00 · 11126 次点击
    这是一个创建于 1822 天前的主题,其中的信息可能已经有所发展或是发生改变。

    c#客户端要支持期货和永续期货的模块,出了三个方案:

    一、客户端自个儿完成,但效果不太好,web 还不能复用,mac 也不能用

    二、web 完成,客户端使用类似内部浏览器的工具来加载展示,但效果就是卡

    三、同事选型了 electron,看官方可以跨平台用,似乎比较合适,但都没使用过,有风险。

    求支持,兄弟们

    40 条回复    2019-04-03 10:10:01 +08:00
    gaocc
        1
    gaocc  
    OP
       2019-04-02 09:44:43 +08:00
    使用过的给个建议,感激不尽,先给个你个爱心
    morethansean
        2
    morethansean  
       2019-04-02 09:53:56 +08:00 via iPhone
    直接用 Electron 呗。
    ijse
        3
    ijse  
       2019-04-02 09:54:56 +08:00
    electron 方案不错的,只是打包体积有点大( 40+MB ),驾驭好了之后,三个平台都能一套代码搞定; Web 代码一定要打包到本地加载,只要用户电脑不是很差,优化做得到位,使用起来体验跟 Native 的客户端无异的;一些密集运算也可以写 c++ addon 编译解决; electron-build 工具更是可以直接提供软件升级功能,是不错的方案。

    使用内部浏览器,页面可能会有些兼容问题,但如果客户端用 cef 会好些,只是打包体积也会很大,并且页面与端交互可能也会有问题。

    当然,最主要的还是要看团队
    gaocc
        4
    gaocc  
    OP
       2019-04-02 09:58:18 +08:00
    @ijse 嗯感谢,既然方案还可以,就继续执行了,目前还在搞 demo 学习中,哈。
    grewer
        5
    grewer  
       2019-04-02 10:02:30 +08:00
    之前我找的时候 没有好的解决方案
    还有我用的时候遇到了些小 bug
    zw1234
        6
    zw1234  
       2019-04-02 10:02:56 +08:00
    electron 基于 Chromium 的,和 chrome 一样占用内存比较高...
    murmur
        7
    murmur  
       2019-04-02 10:08:26 +08:00
    目前看正经的 electron app,叫的出名优化的好的只有 vscode
    奇遇的都是 cef 的爆改,拖家带口不知道带了几百个 dll
    zzh1224
        8
    zzh1224  
       2019-04-02 10:10:13 +08:00
    应该挺成熟了吧,反正我用的时候也没啥大坑要踩,就是打包出来挺大的,就一普通的单页面应用
    nieyujiang
        9
    nieyujiang  
       2019-04-02 10:12:48 +08:00 via iPhone
    反正 sharp 这个库我编译 Windows 版本就没成功过,electron 里面用的
    vampuke
        10
    vampuke  
       2019-04-02 10:17:43 +08:00
    @murmur 斗鱼客户端 QQ 音乐和网易云音乐的 MacOS 版本 postman 好像都是 electron
    murmur
        11
    murmur  
       2019-04-02 10:19:23 +08:00
    @vampuke 光看 electron 没用 你要数一下除了 electron 之外还有多少 dll 才能判断 electron 是核心还就是 UI
    尤其是微信这种带了个 40m 的 qbcore.dll 又是什么爆改版
    caryqy
        12
    caryqy  
       2019-04-02 10:20:46 +08:00
    虾米音乐 mac 端就是的 beggar vip 事件
    gaocc
        13
    gaocc  
    OP
       2019-04-02 10:23:22 +08:00
    目前有点懵,我这前端用的 vue,electron 应该 只是用于 UI,像套壳一样,具体怎么结合或者必须得单独用,都还没踩过坑。有谁和 vue 一起用过的吗?
    @murmur
    @vampuke
    @zw1234
    murmur
        14
    murmur  
       2019-04-02 10:25:20 +08:00
    @gaocc

    问题其实就 2 个
    1、太大,相比,net 把锅都给了运行库,electron 打包出来的东西都得三四十 m,包括和 chrome 一样吃内存,另外一个可能是问题也不是问题的就是 electron 不支持 xp,但是 node-webkit 的老版本是支持的
    2、代码几乎跟没混淆一样

    至于界面、逻辑都不是问题
    vampuke
        15
    vampuke  
       2019-04-02 10:29:21 +08:00
    @murmur 受教了 刚刚看了一下 postman 的文件 感觉应该是 electron 为主
    linchengzzz
        16
    linchengzzz  
       2019-04-02 10:32:18 +08:00
    主要是吃内存 , 电脑配置好 应该没问题
    932357832
        17
    932357832  
       2019-04-02 10:32:23 +08:00
    和 vue 一起用的话,可以用这个 electron-vue -> https://simulatedgreg.gitbooks.io/electron-vue/content/cn/ ,搭配 electron 官方文档使用就可以了
    但是这个已经有段时间没有更新了,里面的 electron 版本也不是最新的,最好自己更新到新版本。
    vampuke
        18
    vampuke  
       2019-04-02 10:33:15 +08:00
    @gaocc 我的理解是 electron 在打包的过程中就像打包了一个 chromium 的内核进你的软件,替你解决兼容问题,vue 的代码就正常写,写完再用 electron 打包,运行的效果和你直接在浏览器里打开 vue 项目是没有太大区别的,至于#14 说的混淆的问题,我的做法是混淆完再打包,这样 electron 解包出来的也只是混淆后的内容
    zqx
        19
    zqx  
       2019-04-02 10:34:06 +08:00 via Android
    直接体验一下 vs code 看看好不好用就行了
    meishigan321
        20
    meishigan321  
       2019-04-02 10:36:37 +08:00 via Android
    期待出个安卓版!安卓版的 ssr 都 n 年不更新了。
    DOLLOR
        21
    DOLLOR  
       2019-04-02 10:42:29 +08:00 via Android
    就是打包体积、运行内存大,其余都不是太大的问题。如果有 web 开发经验,差不多可以无缝切换过来。
    要注意发布代码要混淆,免得把注释里见不得人的信息被好事者拿去搞新闻😅
    gaocc
        22
    gaocc  
    OP
       2019-04-02 10:44:55 +08:00
    @vampuke
    @932357832
    @murmur
    感谢哇,我先自己搂一把文档,自己没编码过没底,目前判断就是能行,有坑,但能填。ok
    jswh
        23
    jswh  
       2019-04-02 10:46:08 +08:00
    打包比较大,其他都挺好的
    Mzs
        24
    Mzs  
       2019-04-02 10:49:11 +08:00
    阿里云的 OSS 客户端就是 electron 写的
    我公司内部的一个工具也用 electron 写的 主要是做一些 http 请求和 adb 命令 蛮好的
    pengwen
        25
    pengwen  
       2019-04-02 10:56:55 +08:00 via Android
    @ijse 为什么我随便打包一下都是 90+的,第一次使用
    murmur
        26
    murmur  
       2019-04-02 10:59:31 +08:00
    @pengwen 我用过比较老的 node-webkit,打包可以控制在 30m 以内
    aleko
        27
    aleko  
       2019-04-02 11:21:02 +08:00
    还好 没什么特别大的坑 小坑一般都是自己用的姿势不正确 但如果你想要魔改就不确定了...
    gaocc
        28
    gaocc  
    OP
       2019-04-02 13:43:15 +08:00
    @932357832 感谢,这个直接全家桶的好操作很多。
    encro
        29
    encro  
       2019-04-02 13:52:16 +08:00
    web 使用卡,
    electron 是也是 web 的,难道就不卡了?
    encro
        30
    encro  
       2019-04-02 13:55:04 +08:00
    首先需要明白是为什么卡?
    比如是通信延迟,还是渲染 dom 太多。
    electron 只是在 web 上加了一个壳,并不一定能解决卡的问题。
    TomVista
        31
    TomVista  
       2019-04-02 14:08:06 +08:00
    很不错的技术生态,就是 electron+hello word =40m 有点尴尬
    joesonw
        32
    joesonw  
       2019-04-02 17:43:40 +08:00
    electron 唯一的问题就是不支持 xp. 支持 xp 的话老老实实用 nw.js
    ijse
        33
    ijse  
       2019-04-02 18:03:23 +08:00
    @pengwen 你该不会是把 node_modules 也打到包里了吧?
    可以试下解压 asar 文件看下
    hws8033856
        34
    hws8033856  
       2019-04-02 18:20:01 +08:00
    @encro 同意,LZ 还是先弄清楚为什么卡,例如我以前的一个项目,用的 WPF 外框+cefsharp 插件的 WPF 版,网页动画效果因为 WPF 的 UI 渲染机制导致看起来不流畅,结果换用 cefsharp 的 winform 版就解决问题了
    gaocc
        35
    gaocc  
    OP
       2019-04-02 18:31:03 +08:00
    demo 了一个智能行情监控的界面,遇到了 websocket 连接不上的坑,具体报错如下:

    Uncaught Error: [Vuex Electron] Please, don't use direct commit's, use dispatch instead of this.
    at Store.store.commit (D:\work\GS_project\gsboms\trunk\code\client\electron-vue\electron-gs\node_modules\vuex-electron\dist\shared-mutations.js:1:1992)
    at _class.passToStore (webpack-internal:///./src/renderer/plugins/ws/observer.js:148:62)
    at WebSocket._this2.webSocket.(anonymous function) (webpack-internal:///./src/renderer/plugins/ws/observer.js:94:20)

    有踩过的吗,百度没找到什么有效资料。

    @hws8033856
    @TomVista
    @Mzs
    @vampuke
    @932357832
    gaocc
        36
    gaocc  
    OP
       2019-04-02 18:31:53 +08:00
    代码逻辑和 web 的一样,浏览器没毛病正常运行
    TomVista
        37
    TomVista  
       2019-04-02 20:03:57 +08:00
    @gaocc 检查下路径, websocket 访问了 vuex store 吗?看起来问题不在 websocket
    gaocc
        38
    gaocc  
    OP
       2019-04-02 20:25:54 +08:00
    这个刚踩掉了。注释掉了 store 目录下 index.js 的 createSharedMutations 插件。先能连接 websocket 了,数据也有了,但是 F5 刷新没重连,有点蛋疼,控制台报错:
    [26292:0402/202200.999:ERROR:CONSOLE(7574)] "Extension server error: Operation failed: : has no execution context", source: chrome-devtools://devtools/bundled/inspector.js (7574)
    这玩意,看了一脸懵逼。明个再来,今天休息了。
    @TomVista
    pengwen
        39
    pengwen  
       2019-04-02 21:45:42 +08:00 via Android
    @ijse 刚刚接触 electron,我是直接执行 electron-packager .
    请问下,有什么技巧可以降低包的大小呢
    TsaiKoga
        40
    TsaiKoga  
       2019-04-03 10:10:01 +08:00
    我前阵子也玩了 electron,可以参考我这个项目 https://github.com/TsaiKoga/it-tools
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1430 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 23:48 · PVG 07:48 · LAX 16:48 · JFK 19:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.