在 Electron 中,应用主要被分为两个部分:
主进程(Main Process)和渲染进程(Renderer Process)
主进程负责管理应用生命周期和所有窗口,
而每个打开的网页或 html 文件则运行在一个独立的渲染进程中
主进程
Electron 启动时会查找 package.json 中 main 字段指定的文件 main.js 作为主进程入口
主进程可以直接使用 Node.js API
主进程 main.js 示例:
import os from 'os'
console.log(os.version()) //内核版本
渲染进程
渲染进程通常运行在浏览器环境中,
受限于安全限制, 渲染进程默认不可以直接使用 Node.js API
允许在渲染进程中直接使用 Node.js API (不推荐在生产环境中使用)
const mainWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
contextIsolation: false,
}
})
适用场景:
需要在渲染进程中直接使用 Node.js API
注意:
该配置降低了安全性, 使 Node.js 的全局对象完全对渲染进程开放
渲染进程 index.js 示例[CJS规范]:
const os = require('os')
console.log(os.userInfo()) //当前用户的信息
注
webPreferences
网页偏好设置
nodeIntegration: true
允许在渲染进程中直接使用 Node.js API
contextIsolation: false
不启用上下文隔离,则Node.js的全局对象(global)和渲染进程的全局对象(window)之间不会实施隔离,
此时,渲染进程可以直接访问 Node.js API 和加载 Node.js 模块
上下文隔离是一种安全机制,用于创建一个隔离的环境