NodeJS&&Electron 真的太好用了,推荐~! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Marstin
V2EX    分享发现

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

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

    需求是一个跨平台的桌面应用程序
    技术栈 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 可以过时了。。。
    pC0oc4EbCSsJUy4W
        12
    pC0oc4EbCSsJUy4W  
       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 版的这点上还是要好很多。
    pC0oc4EbCSsJUy4W
        31
    pC0oc4EbCSsJUy4W  
       2019-09-21 11:37:19 +08:00
    @ShareManT 估计我轻度使用吧
    SilentDepth
        32
    SilentDepth  
       2019-09-21 13:10:42 +08:00
    「成也 Node,败也 Node 」
    run2
        33
    run2  
       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
    2kCS5c0b0ITXE5k2
        35
    2kCS5c0b0ITXE5k2  
       2019-09-22 21:49:57 +08:00
    天翼 3g 太快拉 推荐
    zhuwd
        36
    zhuwd  
       2019-10-09 13:22:49 +08:00 via iPhone
    请问自动更新是全量更新还是差异更新
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3774 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 00:52 PVG 08:52 LAX 17:52 JFK 20:52
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86