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

NodeJS&&Electron 真的太好用了,推荐~!

  •  
  •   Marstin · 2019-09-20 09:52:51 +08:00 · 6592 次点击
    这是一个创建于 1651 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求是一个跨平台的桌面应用程序
    技术栈 java,原计划用 swing 实现,但是实际开发起来才发现难度不是一般大,很难实现一些动态灵活的页面效 果,还需要细致地调整页面组件布局。90%的时间都浪费在写 view。这样的工作量安排大概是 60 工作日 后来经同学推荐,尝试使用 Electron,真的太舒服了,完全以前端形式来写 GUI 工具,两周 不到就做完了。
    总结一下,对于后端技术选型采用 Electron 有以下优缺点:

    优点

    1、GUI 相关模块已经封装好,可以专心写业务
    2、运行于 V8 引擎,可跨平台使用
    3、页面展示可完全使用现有的前端开发模式,有丰富的社区和资源供使用
    4、自动更新
    5、最大优点,大大减少开发周期

    缺点

    1、需要有一定的 Node 和前端知识储备
    2、由于集成的核心功能,打包后的应用很大,空项目也有 90MB 左右
    3、性能相对于 MFC 和 swing 有差距
    4、业务模块中无法直接操作 GUI (基于资源泄露问题设计)
    5、搭建开发环境过程相当复杂,从安装到开发、测试、部署,基本全靠命令行,尤其是打包工具的部分依赖包极难下载
    6、对于部署程序的系统版本有一定要求,可能会缺失相应的库,需要手动加入

    综上所述,大力推荐就完了

    36 条回复    2019-10-09 13:22:49 +08:00
    Marstin
        1
    Marstin  
    OP
       2019-09-20 09:56:54 +08:00
    github 自家的 Atom 就是基于 Electron
    cmdOptionKana
        2
    cmdOptionKana  
       2019-09-20 09:58:55 +08:00
    优势确实很大,因此早已有很多厂家采用这套方案了。虽然 v2 这里很多程序员嫌“重”,但其实大部分普通用户不懂重不重。
    Marstin
        3
    Marstin  
    OP
       2019-09-20 10:02:34 +08:00
    @cmdOptionKana 客户端仙子几乎处于性能过剩时代,桌面程序“重”瑕不掩瑜
    Marstin
        4
    Marstin  
    OP
       2019-09-20 10:03:01 +08:00
    #3 现在
    misaka19000
        5
    misaka19000  
       2019-09-20 10:03:25 +08:00   ❤️ 1
    。。。仿佛来到了三年前
    Marstin
        6
    Marstin  
    OP
       2019-09-20 10:04:07 +08:00
    @misaka19000 文艺复兴
    quqiuzhu
        7
    quqiuzhu  
       2019-09-20 10:04:41 +08:00 via Android   ❤️ 4
    Windows XP 太好用了,推荐~
    memedahui
        8
    memedahui  
       2019-09-20 10:08:03 +08:00   ❤️ 2
    大清亡了.jpg
    qiutianaimeili
        9
    qiutianaimeili  
       2019-09-20 10:08:47 +08:00
    iphone4 太好用了,推荐~
    Marstin
        10
    Marstin  
    OP
       2019-09-20 10:24:15 +08:00
    呜呜呜,V2er 太严格了叭
    shuichengjian
        11
    shuichengjian  
       2019-09-20 11:21:09 +08:00
    前端路过。。。。
    反正 notion 也是用 Electron。。。
    反正大家都说 Node.JS 可以过时了。。。
    fatelight
        12
    fatelight  
       2019-09-20 11:31:54 +08:00
    缺点就是相对原生的有点卡,不过优化好的话,体验比接近原生,比 java 好很多。
    xmind 就是例子,java 的 xmind 卡得哼,Electron 的 xmind zen 非常流畅,虽然比不上原生,但是体验好了很多。
    其实不太在意安装包大小,只要不是特别夸张
    hoyixi
        13
    hoyixi  
       2019-09-20 11:36:11 +08:00   ❤️ 2
    时代变了

    当年写程序都是各种优化和节俭,生怕多耗费用户一点内存

    现在都默认用户为了用我的程序,会一拍桌子买内存
    yautou
        14
    yautou  
       2019-09-20 11:53:35 +08:00
    我们司正要放弃 Electron 重头再来。。。
    nVoxel
        15
    nVoxel  
       2019-09-20 12:00:25 +08:00 via Android
    Barcode 是不是也是基于这个结构的?
    nVoxel
        16
    nVoxel  
       2019-09-20 12:10:31 +08:00 via Android
    纠错 vscode
    damngood
        17
    damngood  
       2019-09-20 12:12:05 +08:00
    个人非常不喜欢. 对资源不友好, 不过只要目标用户能接受就好
    artandlol
        18
    artandlol  
       2019-09-20 12:48:24 +08:00 via Android
    村网通 electron-forge init 打包什么都给你做好了
    int64ago
        19
    int64ago  
       2019-09-20 13:05:02 +08:00
    这么巧,你也上网冲浪……
    Shy07
        20
    Shy07  
       2019-09-20 13:31:09 +08:00
    追求原生性能和体积的等一个 nodegui 1.0 吧
    Marstin
        21
    Marstin  
    OP
       2019-09-20 14:01:59 +08:00
    @artandlol electron-forge init 是脚手架,跨平台打包是用 electron-builder
    Marstin
        22
    Marstin  
    OP
       2019-09-20 14:15:21 +08:00
    @hoyixi 还有一个很现实的问题是现在多数用户都不太能接受桌面应用,近几年入行的,很多人可能都没做过桌面应用,都已经适应了 B/S 架构。话说你说的这个现象,最典型的是游戏吧
    @yautou 请问是基于什么原因考虑的呢?新的技术选型是?借鉴一下= =
    guokeke
        23
    guokeke  
       2019-09-20 14:18:04 +08:00
    你们不要总是打击新人的积极性,16 年的时候你们不也很激动吗?
    Marstin
        24
    Marstin  
    OP
       2019-09-20 14:20:14 +08:00
    @nVoxel 按照官方的描述,是的
    `VS Code is using the Electron framework to run on multiple platforms`
    Counter
        25
    Counter  
       2019-09-20 14:28:48 +08:00
    @misaka19000
    @quqiuzhu
    @memedahui
    @qiutianaimeili
    你们是说楼主的方案落后吗?
    顺便问下现在跨平台的桌面应用程序应该用什么方案
    memedahui
        26
    memedahui  
       2019-09-20 14:37:37 +08:00
    @Counter JAVA GUI (逃
    jon
        27
    jon  
       2019-09-20 14:49:38 +08:00
    感谢大侠的推荐
    wm5d8b
        28
    wm5d8b  
       2019-09-20 20:06:28 +08:00
    我也很好奇你们说 electron 落后的,都是用什么方案。难道人均 flutter 吗?
    ezreal
        29
    ezreal  
       2019-09-20 22:53:15 +08:00
    刚写了个聊天工具
    ShareManT
        30
    ShareManT  
       2019-09-21 10:46:40 +08:00
    @fatelight Xmind Zen 无法开结点比较多的思维导图,java 版的这点上还是要好很多。
    fatelight
        31
    fatelight  
       2019-09-21 11:37:19 +08:00
    @ShareManT 估计我轻度使用吧
    SilentDepth
        32
    SilentDepth  
       2019-09-21 13:10:42 +08:00
    「成也 Node,败也 Node 」
    sobigfish
        33
    sobigfish  
       2019-09-21 14:03:58 +08:00
    真的不喜欢 Electron,一堆硬件公司是缺人的么居然也用 Electron: SteelSeries, 还有 ea 的 origin (当然这个不是硬件公司—-) 真的慢、卡、低效
    g0thic
        34
    g0thic  
       2019-09-21 15:32:59 +08:00
    哇 谢谢 楼主推荐 我还在用 NW.js🐶
    emeab
        35
    emeab  
       2019-09-22 21:49:57 +08:00
    天翼 3g 太快拉 推荐
    zhuwd
        36
    zhuwd  
       2019-10-09 13:22:49 +08:00 via iPhone
    请问自动更新是全量更新还是差异更新
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1028 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 22:22 · PVG 06:22 · LAX 15:22 · JFK 18:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.