需求是一个跨平台的桌面应用程序
技术栈 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、对于部署程序的系统版本有一定要求,可能会缺失相应的库,需要手动加入
综上所述,大力推荐就完了
![]() | 1 Marstin OP github 自家的 Atom 就是基于 Electron |
![]() | 2 cmdOptionKana 2019-09-20 09:58:55 +08:00 优势确实很大,因此早已有很多厂家采用这套方案了。虽然 v2 这里很多程序员嫌“重”,但其实大部分普通用户不懂重不重。 |
![]() | 3 Marstin OP @cmdOptionKana 客户端仙子几乎处于性能过剩时代,桌面程序“重”瑕不掩瑜 |
![]() | 4 Marstin OP #3 现在 |
![]() | 5 misaka19000 2019-09-20 10:03:25 +08:00 ![]() 。。。仿佛来到了三年前 |
![]() | 6 Marstin OP @misaka19000 文艺复兴 |
7 quqiuzhu 2019-09-20 10:04:41 +08:00 via Android ![]() Windows XP 太好用了,推荐~ |
8 memedahui 2019-09-20 10:08:03 +08:00 ![]() 大清亡了.jpg |
![]() | 9 qiutianaimeili 2019-09-20 10:08:47 +08:00 iphone4 太好用了,推荐~ |
![]() | 10 Marstin OP 呜呜呜,V2er 太严格了叭 |
![]() | 11 shuichengjian 2019-09-20 11:21:09 +08:00 前端路过。。。。 反正 notion 也是用 Electron。。。 反正大家都说 Node.JS 可以过时了。。。 |
12 pC0oc4EbCSsJUy4W 2019-09-20 11:31:54 +08:00 缺点就是相对原生的有点卡,不过优化好的话,体验比接近原生,比 java 好很多。 xmind 就是例子,java 的 xmind 卡得哼,Electron 的 xmind zen 非常流畅,虽然比不上原生,但是体验好了很多。 其实不太在意安装包大小,只要不是特别夸张 |
![]() | 13 hoyixi 2019-09-20 11:36:11 +08:00 ![]() 时代变了 当年写程序都是各种优化和节俭,生怕多耗费用户一点内存 现在都默认用户为了用我的程序,会一拍桌子买内存 |
![]() | 14 yautou 2019-09-20 11:53:35 +08:00 我们司正要放弃 Electron 重头再来。。。 |
![]() | 15 nVoxel 2019-09-20 12:00:25 +08:00 via Android Barcode 是不是也是基于这个结构的? |
![]() | 16 nVoxel 2019-09-20 12:10:31 +08:00 via Android 纠错 vscode |
![]() | 17 damngood 2019-09-20 12:12:05 +08:00 个人非常不喜欢. 对资源不友好, 不过只要目标用户能接受就好 |
![]() | 18 artandlol 2019-09-20 12:48:24 +08:00 via Android 村网通 electron-forge init 打包什么都给你做好了 |
![]() | 19 int64ago 2019-09-20 13:05:02 +08:00 这么巧,你也上网冲浪…… |
![]() | 20 Shy07 2019-09-20 13:31:09 +08:00 追求原生性能和体积的等一个 nodegui 1.0 吧 |
![]() | 21 Marstin OP @artandlol electron-forge init 是脚手架,跨平台打包是用 electron-builder |
![]() | 22 Marstin OP |
![]() | 23 guokeke 2019-09-20 14:18:04 +08:00 你们不要总是打击新人的积极性,16 年的时候你们不也很激动吗? |
![]() | 24 Marstin OP @nVoxel 按照官方的描述,是的 `VS Code is using the Electron framework to run on multiple platforms` |
![]() | 25 Counter 2019-09-20 14:28:48 +08:00 |
27 jon 2019-09-20 14:49:38 +08:00 感谢大侠的推荐 |
![]() | 28 wm5d8b 2019-09-20 20:06:28 +08:00 我也很好奇你们说 electron 落后的,都是用什么方案。难道人均 flutter 吗? |
29 ezreal 2019-09-20 22:53:15 +08:00 刚写了个聊天工具 |
31 pC0oc4EbCSsJUy4W 2019-09-21 11:37:19 +08:00 @ShareManT 估计我轻度使用吧 |
32 SilentDepth 2019-09-21 13:10:42 +08:00 「成也 Node,败也 Node 」 |
![]() | 33 run2 2019-09-21 14:03:58 +08:00 真的不喜欢 Electron,一堆硬件公司是缺人的么居然也用 Electron: SteelSeries, 还有 ea 的 origin (当然这个不是硬件公司-) 真的慢、卡、低效 |
![]() | 34 g0thic 2019-09-21 15:32:59 +08:00 哇 谢谢 楼主推荐 我还在用 NW.js |
35 2kCS5c0b0ITXE5k2 2019-09-22 21:49:57 +08:00 天翼 3g 太快拉 推荐 |
![]() | 36 zhuwd 2019-10-09 13:22:49 +08:00 via iPhone 请问自动更新是全量更新还是差异更新 |