news 2026/3/26 19:52:54

Electron 架构(2025 年最新)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Electron 架构(2025 年最新)

Electron 架构(2025 年最新)

Electron 的架构继承自Chromium的多进程模型,与现代浏览器(如 Chrome)非常相似。这种设计通过进程隔离提升了应用的稳定性安全性:即使某个网页内容崩溃或恶意,也不会影响整个应用。

核心是:一个主进程(Main Process)+多个渲染进程(Renderer Processes),加上辅助机制如预加载脚本和工具进程。

1. 主进程(Main Process)
  • 数量:整个应用只有一个主进程,是应用的入口点。
  • 运行环境:Node.js 环境,可以直接使用require()和所有 Node.js API。
  • 主要职责
    • 管理应用生命周期(通过app模块,如启动、退出)。
    • 创建和管理窗口(通过BrowserWindow模块)。
    • 每个BrowserWindow会对应创建一个渲染进程。
    • 处理原生桌面功能(如菜单、托盘、对话框、通知)。
    • 与渲染进程通信(通过webContents对象)。
  • 类比:类似于 Chrome 的“浏览器进程”(Browser Process),但额外集成 Node.js。
2. 渲染进程(Renderer Process)
  • 数量:每个窗口(BrowserWindow)或网页嵌入(如BrowserView)一个渲染进程。
  • 运行环境:标准的 Web 环境(HTML、CSS、JavaScript),类似于浏览器标签页。
  • 限制
    • 默认禁用 Node.js 集成(新版安全默认设置),不能直接使用require()或 Node API。
    • 如果需要 NPM 包,必须用打包工具(如 webpack、Vite)处理。
  • 职责:渲染 UI 和处理网页逻辑。
  • 类比:类似于 Chrome 的每个标签页进程。
3. 预加载脚本(Preload Scripts)
  • 作用:在渲染进程的网页内容加载前执行的脚本。
  • 环境:有 Node.js 和 Electron API 访问权,但与网页内容隔离(通过contextIsolation默认启用)。
  • 安全机制
    • 不能直接修改window全局对象,以防泄露特权 API。
    • 推荐使用contextBridge.exposeInMainWorld()安全暴露 API 到渲染进程(如自定义对象或 IPC)。
  • 常见用途:桥接主进程和渲染进程,实现 IPC 通信(ipcRenderer)。
4. 工具进程(Utility Process)
  • 引入目的:处理不信任服务、CPU 密集任务或易崩溃组件。
  • 环境:完整的 Node.js 进程,由主进程通过UtilityProcessAPI 启动。
  • 优势:可直接与渲染进程通信(使用MessagePort),比传统的child_process.fork更结构化。
  • 用途:隔离风险操作,避免影响主进程。
5. 进程间通信(IPC)
  • 主进程 ↔ 渲染进程
    • 主进程通过webContents发送消息或执行 JS。
    • 渲染进程通过预加载脚本暴露的ipcRenderer发送消息到主进程(ipcMain接收)。
  • 安全通信:必须经预加载脚本桥接,不能直接访问。
  • 工具进程 ↔ 渲染进程:使用MessagePort直接通道。
6. 与普通浏览器的区别
  • 浏览器:多个标签页进程 + 一个浏览器进程(无 Node.js)。
  • Electron:主进程集成 Node.js,可访问系统 API;渲染进程默认隔离 Node.js。
  • 安全性提升(近期变化):
    • contextIsolation默认启用:预加载与网页上下文隔离。
    • 渲染进程禁用 Node.js:防止恶意网页直接访问系统。
    • 强调使用contextBridge暴露 API。
架构简图(文字描述)
主进程 (Node.js + Electron API) ├── 创建/管理 BrowserWindow ├── 处理原生 GUI (菜单、托盘等) ├── IPC (ipcMain) └── 启动 Utility Process 每个 BrowserWindow └── 渲染进程 (Web 页面) ├── Preload 脚本 (桥接 Node/Electron API) └── Web 内容 (纯 Web JS,隔离) Utility Process (可选,Node.js) └── 与渲染进程直接通信 (MessagePort)

这种多进程架构让 Electron 应用既能利用 Web 技术快速开发 UI,又能通过主进程访问桌面原生功能,同时保持较高安全性。如果你想深入某个部分(如 IPC 示例或 preload 最佳实践),可以告诉我!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/26 17:50:54

12、Photoshop图层操作与样式应用全攻略

Photoshop图层操作与样式应用全攻略 在图像处理中,Photoshop是一款功能强大的工具,它提供了丰富的图层操作和样式应用功能。下面将详细介绍这些功能的使用方法。 1. 过滤图层 过滤图层功能允许你在“图层”面板中筛选出特定名称、类型或符合其他条件的图层。当你的图像项目…

作者头像 李华
网站建设 2026/3/26 12:42:43

25、SharePoint 内容类型与工作流深度解析

SharePoint 内容类型与工作流深度解析 1. 内容类型与工作流关联 在 SharePoint 中,自然会想到将工作流与内容类型进行关联。既然能将工作流与列表和站点关联,内容类型也应不例外。 若基于工作流设置将其与列表关联,当用户上传文档或更改列表中的现有文档时,工作流就会启…

作者头像 李华
网站建设 2026/3/9 11:59:21

32、SharePoint开发:Web部件与页面定制

SharePoint开发:Web部件与页面定制 在SharePoint开发中,Web部件和页面定制是两个重要的方面。下面将详细介绍相关内容。 Web部件类型 Web部件是SharePoint开发中非常实用的组件,主要有以下几种类型: - 可视化Web部件 :可以通过可视化界面进行设计和定制,方便开发者快…

作者头像 李华
网站建设 2026/3/17 11:39:01

为什么顶尖团队都在抢用Open-AutoGLM做指令优化?真相令人震惊

第一章:为什么顶尖团队都在抢用Open-AutoGLM做指令优化?真相令人震惊在自然语言处理领域,模型指令优化正成为决定AI系统表现的关键瓶颈。Open-AutoGLM的出现彻底改变了这一格局——它不仅实现了对大语言模型(LLM)指令的…

作者头像 李华
网站建设 2026/3/23 19:59:29

【Open-AutoGLM指令集优化全解析】:揭秘下一代AI编译器性能飞跃核心技术

第一章:Open-AutoGLM指令集优化全解析Open-AutoGLM 是新一代面向大语言模型推理与训练的指令集架构,专为提升 GPU 与 NPU 上的张量计算效率而设计。其核心通过微内核调度、稀疏权重压缩和动态精度切换机制,在保持模型精度的同时显著降低延迟与…

作者头像 李华
网站建设 2026/3/19 5:55:19

如何用Open-AutoGLM实现一键推理部署?这套模板让你少走3个月弯路

第一章:Open-AutoGLM一键推理部署的核心价值在大模型快速发展的背景下,Open-AutoGLM 的一键推理部署能力显著降低了开发者和企业的使用门槛。该功能将复杂的环境配置、依赖安装与服务启动流程封装为自动化脚本,使用户能够在几分钟内完成本地或…

作者头像 李华