ELECTRON介绍

Electron是可以让你使用HTML5、css和Js创建桌面应用的runtime,能够将我们的前端代码打包成一个可安装的文件,用户进行本地安装之后,以系统(windows/Linus/macOS)应用的方式运行,而不是浏览器的方式运行。

Electron将chromium和Node在各自领域都拥有广泛使用者的两个应用平台合二为一,让开发者可以使用JS创建出一种全新的应用程序。在所有浏览器能实现的功能,在Electron都可以实现,在Node能实现的功能,在Electron中同样可以实现。

为什么要以这种方式来做?Electron有啥子好处:

1、 Electron将Chromium Content Module和Node.js运行时整合在一起,开发者利用electron,可以通过web页面创建GUI界面,同时,通过与具体操作系统无关的API,调用windows/macOS/Linus 原生操作系统的功能。这让我们的开发的可能性变得异常强大,比如: 你要查看和编辑计算机文件夹中的图片 ?利用传统的浏览器方式不可以,但是electron可以。

2、在应用层面,解决了一直困扰我们前端的浏览器兼容性问题,内置的特定版本的chromium和nodeJS打包应用统一了标准。对于前端开发人员来说无疑是一种福音,就拿我之前写的一个视频会议系统的项目,如果在浏览器去做,估计浏览器兼容性问题会是一个长期的持续解决中的问题,在electron中就不会存在这个问题

3、对于开发桌面应用来说,减少了学习成本,让前端人员基于Electron也可以开发桌面应用程序,对于前端开发人员来说,有乐更高的运行权限和更少的功能限制

4、离线应用的先天性优势,这个我就不多说了。

ELECTRON 工作原理

Elctron应用由两种进程组成,主进程以及0个或者多个渲染进程。每种进程都分别在应用中扮演不同的角色。

主进程承担着几项重要的职能,它可以相应应用生命周期事件,这些事件包括启动、退出、准备退出、正在切换到后台、正在切换回前台等等。主进程还负责与原生系统API进行通信。

渲染器进程由electron的BrowserWindow模块来进行创建和销毁。它可以加载web页面,向用户显示GUI界面,基于chromium多进程架构的设计,每个渲染进程都运行在各自的单个线程上。这些页面就可以加载JS文件在各自的渲染进程中执行了。与web界面不同的地方是,渲染进程中执行的代码可以访问node的所有API,利用这个特性,渲染进程可以使用原生模块,实现与底层系统的交互。

另外要注意的点是渲染器进程之间是相互隔离的不能够直接互相通信,并且不允许他们直接访问操作系统级别的API.要先与主进程进行通信,再由主进程进行转发或者由主进程访问安全级别API再返回。

未完待续……