🎬 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)

四、安全机制

五、架构优势

六、架构工作原理

七、典型应用场景

总结


img

Electron 架构详解

Electron 是一个由 GitHub 开源的跨平台桌面应用开发框架,它通过将 Chromium 和 Node.js 深度整合,使开发者能够使用 Web 技术(HTML、CSS、JavaScript)构建跨平台的桌面应用程序。以下是对 Electron 架构的全面解析:

一、核心架构概述

Electron 的核心架构基于两个主要组件的深度整合:

  1. Chromium:提供渲染引擎,负责将 HTML/CSS/JavaScript 转换为用户界面
  2. Node.js:提供系统级 API,允许访问文件系统、网络、硬件等

这种架构实现了"用 Web 技术构建桌面应用"的核心理念。

二、多进程架构设计

Electron 采用双进程模型,这是其稳定性和安全性的基石:

1. 主进程(Main Process)

  • 唯一存在:每个 Electron 应用有且仅有一个主进程
  • 职责
    • 应用生命周期管理(启动、退出、休眠等)
    • 创建和管理窗口(BrowserWindow)
    • 调用操作系统原生 API(文件系统、网络、系统托盘等)
    • 处理进程间通信(IPC)
  • 运行环境:纯 Node.js 环境,拥有完整的 require() 和系统权限
  • 入口文件:通常为 main.jsmain.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 采用多种安全机制保障应用安全:

  1. contextIsolation:必须开启,确保渲染进程与主进程隔离
  2. nodeIntegration:默认禁用(nodeIntegration: false),防止渲染进程直接访问 Node.js API
  3. 预加载脚本(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')
});

五、架构优势

  1. 跨平台开发:一套代码可编译为 Windows、macOS、Linux 的安装包
  2. 技术栈零门槛:前端开发者可直接复用现有技能(Vue/React/Angular)
  3. 系统级功能访问:通过 Node.js API 访问文件系统、系统托盘等
  4. 稳定性和安全性:多进程模型提高了应用的稳定性和安全性

六、架构工作原理

Electron 的架构实现了三个层级的整合:

  1. 系统接口层:通过 Node.js 的 C++ 扩展调用操作系统 API
  2. 桥接层:实现 Node.js 事件循环与 Chromium 消息循环的协同
  3. 应用层:基于 Web 标准的前端界面

这种架构使 Electron 能够在保持 Web 技术优势的同时,提供桌面应用所需的系统级功能。

七、典型应用场景

Electron 架构特别适合以下场景:

  • 需要跨平台、轻量且具备系统级交互的应用
  • 代码编辑器(如 VS Code)、数据可视化工具、本地资源管理器
  • 需要快速开发和部署的工具类软件

总结

Electron 的架构设计巧妙地融合了 Web 技术与桌面应用需求,通过多进程模型、IPC 通信和安全机制,实现了"用 Web 技术构建桌面应用"的目标。这种架构使前端开发者能够轻松进入桌面应用开发领域,同时保持了应用的跨平台能力和系统级功能。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐