Electron是什么以及可以做什么( 三 )


窗口内加载的页面就是开发者要实现的渲染进程的逻辑,我们可以让渲染进程与主进程通信,他们之间是通过 IPC 消息管道进行通信的 。虽然有一些特殊的手段让两个渲染进程直接通信(后面的章节我们会介绍),但大部分时候还是通过主进程来中转消息以达到渲染进程间通信的目的 。
Electron 提供的一系列内置模块大部分是专门为主进程的逻辑服务的,比如 app 模块、BrowserWindow 模块和 session 模块等,少量模块是专门为渲染进程的逻辑服务的,比如 ipcRenderer 模块、webFrame 模块等,只有少量模块是两个进程可以同时使用的,比如:clipboard 模块、desktopCapturer 模块等 。我们应该清楚这些模块的势力范围,不能在主进程中使用渲染进程的模块,反之也不行 。
Electron 的不足基于 Electron 开发桌面 GUI 应用并不是完美的方案,它也有它的不足,综合起来说有以下几点:
第一:打包后的应用体积巨大
一个功能不算多的桌面应用,通过 electron-builder 压缩打包后至少要 50M 。而且如果开发者不做额外的 Hack 工作的话,用户每次升级应用程序,还要让用户再下载一次同样体积的安装包 。这对于应用分发来说是一个不小的负担 。但随着网络环境越来越好,用户磁盘的容积越来越大,此问题给用户带来的损失会慢慢被削弱 。
第二:版本发布过快
为了跟进 Chromium (和 Node.js) 的版本发布节奏,Electron 也有非常频繁的版本发布机制,每次 Chromium 的改动,都可能导致 Electron 冒出很多新的问题,甚至稳定版本都有很多未解决的问题 。好在关键核心功能一直以来都是稳定的 。
第三:安全性问题
Electron 把一些有安全隐患的模块和 API 都设置为默认不可用的状态,但这些模块和 API 都是非常常用的,有的时候开发者不得不打开这些开关,一旦处理不当,就可能导致他们开发的应用存在安全隐患,给开发者乃至终端用户带来伤害 。安全问题有很多值得关注的技术细节,以至于 Electron 官方文档中专门开辟出来一个章节号召程序员重视安全问题 。
第五:资源消耗较大
Electron 底层基于 Chromium 浏览器,资源占用较多一直以来都是 Chromium 被人诟病的问题,目前来看这个问题还没有很好的解决办法,只能依赖 Chromium 团队对 Chromium 的优化工作了 。
第六:性能问题
Electron 本身是多进程多线程的框架,但 JavaScript 是单线程运行的,如果产品的需求中有大量音视频编解码、复杂数据格式化这类 CPU 消耗性的需求,那么不应该在 Electron 内使用 JavaScript 来实现这些需求,而应该使用 Node.js 的原生模块来实现这些需求 。与其说这是一个 Electron 的不足,不如说这是 JavaScript 的不足 。
除了以上这些问题外,Electron 还不支持老版本的 Windows 操作系统,比如 Windows XP,在中国还有一些用户是使用 Windows XP 的,开发者如果需要面向这些用户,应该考虑使用其他技术方案了 。
总结通过本章内容的讲解,我带领大家学习了 Electron 框架的由来、Electron 框架的价值、Electron 框架的基本原理以及 Electron 框架有哪些不足 。
希望读者通过阅读本章内容对 Electron 框架有一个基本的认识,知道 Electron 框架可以为我们带来什么价值,以及这些价值背后的隐患 。
有了这些知识我们就可以更从容的进入 Electron 应用开发的战场了,还等什么,随我来吧 。

经验总结扩展阅读