流程模型
主进程
每个Electron应用都有一个单一的主进程,作为程序应用的入口。主进程在Node.js环境中运行,这意味着它具有require模块和使用所有Nodejs API的能力。
窗口管理
主进程主要使用BrowserWindow模块创建和管理应用程序窗口。 BrowserWindow类的每个实例创建一个应用程序窗口,且在单独的渲染器进程中加载一个网页。 可在主进程中使用window的webContent对象与网页内容进行交互。
渲染器进程
就是chrome,无法直接访问Electron的API。
Preload 脚本
Preload包含了执行于渲染器进程,且先于网页内容开始加载的代码。在BrowserWindow的构造方法webPreferences选项里加载Preload到主进程。 Preload和渲染进程共享window,也可以访问Node API。 由于环境隔离,Preload中不能直接把变量赋值给window,要通过contextBridge添加。通过contextBridge
的方法exposeInMainWorld
相当于给window添加属性
javascript
// 在上下文隔离启用的情况下使用预加载 preload.js
const { contextBridge } = require('electron')
contextBridge.exposeInMainWorld('myAPI', {
doAThing: () => {}
})
// 在渲染器进程使用导出的 API renderer.js
window.myAPI.doAThing()
使用electron-updater
- 更新服务器
需要保持旧的文件xxx.exe.blockmap
,这个应该是和新的xxx.exe.blockmap
要对比。