Electron学习之路 - Processes
此篇文章信息来源于Electron官网资料和自己实践查阅资料所得。
阅读本文前建议先看:基础教程
你也可以查看:官网资料
进程模型
Electron从Chromium继承了它的多进程架构,这使得该框架在架构上非常类似于现代web浏览器。本文将扩展 教程 中应用的概念。
为什么不是单进程》?
Web浏览器是非常复杂的应用程序。除了显示网页内容的主要功能之外,他们还有许多次要职责,比如管理多个窗口(或标签)和加载第三方扩展。
在早期,浏览器通常使用一个进程来实现所有这些功能。虽然这种模式意味着你打开的每个标签的开销更小,但它也意味着一个网站的崩溃或挂起会影响整个浏览器。
多进程模型
为了解决这个问题,Chrome团队决定每个标签将在自己的过程中呈现,以限制网页上的漏洞或恶意代码可能对整个应用程序造成的伤害。然后,一个单一的浏览器进程控制这些进程,以及应用程序的整个生命周期。
Electron应用的结构与此非常相似。
作为一个应用程序开发者,你控制两种类型的进程:main和renderer。
这些过程类似于Chrome自己的浏览器及其渲染过程。
主进程
每个Electron应用程序都有一个单独的主进程,它充当应用程序的入口点。主进程运行在Node.js环境中,这意味着它能够require模块并使用所有Node.js api。
窗口管理
主进程的主要目的是使用 BrowserWindow 模块创建和管理应用程序窗口。
BrowserWindow类的每个实例都会创建一个应用程序窗口,在一个单独的渲染进程中加载一个网页。你可以在主进程中使用窗口的 webContents 对象与这些web内容进行交互。
main.js
1 | const { BrowserWindow } = require('electron') |
注意:渲染器进程也会为 web embeds 创建,比如BrowserView模块。webContents对象也可以访问嵌入的web内容。
因为BrowserWindow模块是一个 EventEmitter ,您还可以为各种用户事件添加处理程序(例如,最小化或最大化窗口)。
当BrowserWindow实例被销毁时,它对应的渲染进程也会终止。
应用的声明周期
主进程还通过Electron的 app 模块控制应用程序的生命周期。此模块提供了大量事件和方法,您可以使用它们来添加自定义应用程序行为(例如,以编程方式退出应用程序、修改应用程序停靠或显示关于面板)。
作为一个实际的例子,在快速入门指南中显示的应用程序使用应用程序api来创建一个更原生的应用程序窗口体验。
VUE项目js-base64不兼容IE
一般我们直接通过指令:
npm install –save js-base64
安装base64插件,但是是默认安装高版本(3或以上),它的问题就是不兼容ie11
解决办法:
1)卸载已经安装的base64插件(未安装则跳过此步)
npm uninstall js-base64
2)安装指定版本(安装2.x.x版本)
npm install js-base64@2.6.2 –save