🎬 HoRain云小助手:个人主页
🔥 个人专栏: 《Linux 系列教程》《c语言教程》
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
专栏介绍
专栏名称 | 专栏介绍 |
《C语言》 | 本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。 |
《网络协议》 | 本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制! |
《docker容器精解篇》 | 全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。 |
《linux系列》 | 本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。 |
《python 系列》 | 本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。 |
《试题库》 | 本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等) |
目录
⛳️ 推荐
专栏介绍
Electron 架构详解
一、核心架构概述
二、多进程架构设计
1. 主进程(Main Process)
2. 渲染进程(Renderer Process)
三、进程间通信(IPC)
四、安全机制
五、架构优势
六、架构工作原理
七、典型应用场景
总结
Electron 架构详解
Electron 是一个由 GitHub 开源的跨平台桌面应用开发框架,它通过将 Chromium 和 Node.js 深度整合,使开发者能够使用 Web 技术(HTML、CSS、JavaScript)构建跨平台的桌面应用程序。以下是对 Electron 架构的全面解析:
一、核心架构概述
Electron 的核心架构基于两个主要组件的深度整合:
- Chromium:提供渲染引擎,负责将 HTML/CSS/JavaScript 转换为用户界面
- Node.js:提供系统级 API,允许访问文件系统、网络、硬件等
这种架构实现了"用 Web 技术构建桌面应用"的核心理念。
二、多进程架构设计
Electron 采用双进程模型,这是其稳定性和安全性的基石:
1. 主进程(Main Process)
- 唯一存在:每个 Electron 应用有且仅有一个主进程
- 职责:
- 应用生命周期管理(启动、退出、休眠等)
- 创建和管理窗口(BrowserWindow)
- 调用操作系统原生 API(文件系统、网络、系统托盘等)
- 处理进程间通信(IPC)
- 运行环境:纯 Node.js 环境,拥有完整的
require()和系统权限 - 入口文件:通常为
main.js或main.ts
const { app, BrowserWindow, ipcMain } = require('electron'); app.whenReady().then(() => { const win = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: false, // 默认禁用 contextIsolation: true, // 必须开启 preload: path.join(__dirname, 'preload.js') } }); win.loadFile('index.html'); });2. 渲染进程(Renderer Process)
- 多个存在:每个 BrowserWindow(或 标签)对应一个独立的渲染进程
- 职责:
- 渲染用户界面(HTML/CSS/JS)
- 处理用户交互(点击、输入等)
- 执行前端逻辑
- 运行环境:Chromium 的渲染实例,本质上是一个浏览器环境
三、进程间通信(IPC)
主进程和渲染进程之间通过 IPC 机制进行通信:
- 主进程:使用
ipcMain模块监听消息 - 渲染进程:使用
ipcRenderer模块发送消息
// 主进程 (main.js) ipcMain.handle('read-file', async (event, filePath) => { const fs = require('fs').promises; return await fs.readFile(filePath, 'utf8'); }); // 渲染进程 (index.html) const { ipcRenderer } = require('electron'); ipcRenderer.invoke('read-file', 'data.txt').then(data => { console.log(data); });四、安全机制
Electron 采用多种安全机制保障应用安全:
- contextIsolation:必须开启,确保渲染进程与主进程隔离
- nodeIntegration:默认禁用(
nodeIntegration: false),防止渲染进程直接访问 Node.js API - 预加载脚本(Preload):安全桥接机制,用于向渲染进程暴露必要的 API
// 预加载脚本 (preload.js) const { contextBridge, ipcRenderer } = require('electron'); contextBridge.exposeInMainWorld('electronAPI', { readFile: (filePath) => ipcRenderer.invoke('read-file', filePath), getAppVersion: () => ipcRenderer.invoke('get-app-version') });五、架构优势
- 跨平台开发:一套代码可编译为 Windows、macOS、Linux 的安装包
- 技术栈零门槛:前端开发者可直接复用现有技能(Vue/React/Angular)
- 系统级功能访问:通过 Node.js API 访问文件系统、系统托盘等
- 稳定性和安全性:多进程模型提高了应用的稳定性和安全性
六、架构工作原理
Electron 的架构实现了三个层级的整合:
- 系统接口层:通过 Node.js 的 C++ 扩展调用操作系统 API
- 桥接层:实现 Node.js 事件循环与 Chromium 消息循环的协同
- 应用层:基于 Web 标准的前端界面
这种架构使 Electron 能够在保持 Web 技术优势的同时,提供桌面应用所需的系统级功能。
七、典型应用场景
Electron 架构特别适合以下场景:
- 需要跨平台、轻量且具备系统级交互的应用
- 代码编辑器(如 VS Code)、数据可视化工具、本地资源管理器
- 需要快速开发和部署的工具类软件
总结
Electron 的架构设计巧妙地融合了 Web 技术与桌面应用需求,通过多进程模型、IPC 通信和安全机制,实现了"用 Web 技术构建桌面应用"的目标。这种架构使前端开发者能够轻松进入桌面应用开发领域,同时保持了应用的跨平台能力和系统级功能。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙