文章已阅读
 

此篇文章信息来源于Electron官网资料和自己实践查阅资料所得。

阅读本文前建议先看:基础教程

你也可以查看:官网资料

进程模型

Electron从Chromium继承了它的多进程架构,这使得该框架在架构上非常类似于现代web浏览器。本文将扩展 教程 中应用的概念。
为什么不是单进程》?

Web浏览器是非常复杂的应用程序。除了显示网页内容的主要功能之外,他们还有许多次要职责,比如管理多个窗口(或标签)和加载第三方扩展。

在早期,浏览器通常使用一个进程来实现所有这些功能。虽然这种模式意味着你打开的每个标签的开销更小,但它也意味着一个网站的崩溃或挂起会影响整个浏览器。

多进程模型

为了解决这个问题,Chrome团队决定每个标签将在自己的过程中呈现,以限制网页上的漏洞或恶意代码可能对整个应用程序造成的伤害。然后,一个单一的浏览器进程控制这些进程,以及应用程序的整个生命周期。

Electron应用的结构与此非常相似。

作为一个应用程序开发者,你控制两种类型的进程:main和renderer。

这些过程类似于Chrome自己的浏览器及其渲染过程。

主进程

每个Electron应用程序都有一个单独的主进程,它充当应用程序的入口点。主进程运行在Node.js环境中,这意味着它能够require模块并使用所有Node.js api。

窗口管理

主进程的主要目的是使用 BrowserWindow 模块创建和管理应用程序窗口。

BrowserWindow类的每个实例都会创建一个应用程序窗口,在一个单独的渲染进程中加载一个网页。你可以在主进程中使用窗口的 webContents 对象与这些web内容进行交互。

main.js

1
2
3
4
5
6
7
const { BrowserWindow } = require('electron')

const win = new BrowserWindow({ width: 800, height: 1500 })
win.loadURL('https://github.com')

const contents = win.webContents
console.log(contents)

注意:渲染器进程也会为 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

2022-09-28

浏览 |

© 2023 南疆 with help from Hexo and Twitter Bootstrap. Theme by Freemind.

container-narrow -->