【小结】Electron实际运用中的学习和问题

生命周期图
【小结】Electron实际运用中的学习和问题_第1张图片


**一、主进程与渲染进程**

electron 分为主进程和渲染进程,
主进程:Electron 运行 package.json 的 main 脚本的进程被称为主进程。 在主进程中运行的脚本通过创建web页面来展示用户界面。 一个 Electron 应用总是有且只有一个主进程。主进程中不能获取到浏览器的window对象。

渲染进程:简单的说就是electron中的每个web页面


1.主进程
【小结】Electron实际运用中的学习和问题_第2张图片
每个 Electron 应用的入口文件。它控制着整个 App 的生命周期,从打开到关闭。 它也管理着系统原生元素比如菜单,菜单栏,Dock 栏,托盘等。 主进程负责创建 APP 的每个渲染进程。而且整个 Node API 都集成在里面。
创建窗口等系统事件都在主进程中进行,可以对创建的窗口进行多种配置。

主进程常用的
app:控制整个 Electron 应用的生命周期。比如ready事件,当 Electron 完成初始化时会被触发。
如图,把创建窗口的方法放在其中执行
在这里插入图片描述
BrowserWindow:创建和控制应用的窗口
webContents:负责渲染和控制网页, 是 BrowserWindow 对象的一个属性
ipcMain:用于主进程中,和渲染进程通信的
【小结】Electron实际运用中的学习和问题_第3张图片
渲染进程中常用的
ipcRenderer:用于渲染进程中,和主进程通信的
remote:可以方便你在渲染进程中直接调用主进程的方法
< webview >tag:可以载入外界的网页
【小结】Electron实际运用中的学习和问题_第4张图片

2.主进程与渲染进程

主进程中可以调用底层所有的GUI的API,渲染进程则因为安全问题不能随意调用。
所以,如果要调用需要相互通讯,让主进程来调用。

在页面中调用与 GUI 相关的原生 API 是不被允许的,因为在 web 页面里操作原生的 GUI 资源是非常危险的,而且容易造成资源泄露。 如果你想在 web 页面里使用 GUI 操作,其对应的渲染进程必须与主进程进行通讯,请求主进程进行相关的 GUI 操作。

主进程和渲染进程进行通讯的时候,就需要用到 ipc 这个特性。而 ipc 又分为 ipcMainipcRenderer ,分别用于主进程和渲染进程。
【小结】Electron实际运用中的学习和问题_第5张图片

渲染器进程向主进程通讯
渲染器进程主要通过 ipcRenderer.send 发送异步消息,使用 ipcRenderer.on 事件监控主进程的返回值

主进程使用ipcMain.on监听消息,监听获取后通过event.sender.send(相当于webContent.send)来发送一个事件。如果是同步可以通过evnet.returnValue来返回
在这里插入图片描述
在下面代码中,我通过页面按钮,触发了主进程中的maxsize事件
主进程收到了,发送reply事件给渲染进程,渲染进程监听到后,在控制台打印了主进程发过来的Ok


想要详细的学习,还是官方文档最详细。

你可能感兴趣的:(前端)