Skip to content

Electron 知识模块 💻

使用 Web 技术构建跨平台桌面应用

学习路线

核心架构 → 安全实践 → 打包与分发 → 原生集成 → 调试与性能
    │           │           │           │           │
    ▼           ▼           ▼           ▼           ▼
  进程模型   上下文隔离   自动更新    托盘/菜单    DevTools
  IPC 通信   权限控制    代码签名    对话框      electron-log
  MessagePort 协议拦截   blockmap    快捷键      白屏排查
  Utility Process  依赖审计

核心篇

  1. 核心架构 🔥
    • 进程模型(主进程 vs 渲染进程)
    • IPC 通信机制、MessagePort、Utility Process
    • Preload 脚本
    • BrowserWindow 配置

深入篇 🔥

  1. 安全实践

    • 上下文隔离(Context Isolation)
    • 权限控制与沙箱
    • 远程内容安全、协议拦截、依赖审计
    • CSP 配置
  2. 原生集成

    • 系统托盘(Tray)、原生菜单(Menu)
    • 通知、对话框、剪贴板、全局快捷键
    • 与 Web 页面交互模式

实践篇 🔥

  1. 打包与分发

    • electron-builder 配置
    • 自动更新、blockmap 增量更新
    • 代码签名与公证、多环境构建
    • CI/CD 集成
  2. 调试与性能

    • DevTools、主进程调试、source map
    • 多窗口内存、性能优化
    • electron-log、崩溃上报
    • 白屏、打包路径、ASAR 调试

代码示例

示例说明
examples/ipc-demo/IPC 通信:send / invoke / webContents.send 三种方式
examples/preload-context-bridge/contextBridge 白名单 API,含主进程校验
examples/auto-update-demo/electron-updater 最小配置,GitHub Releases 发布流程

核心特点

  • 跨平台:一套代码运行在 Windows/macOS/Linux
  • Web 技术:使用 HTML/CSS/JS 构建 UI
  • Node.js 能力:完整的文件系统、网络访问
  • 原生 API:系统托盘、通知、菜单等

高频面试考点

  1. 主进程和渲染进程的区别?
  2. 什么是 Context Isolation?为什么需要?
  3. IPC 通信的几种方式?MessagePort 与 ipcMain 的区别?
  4. 如何实现自动更新?blockmap 增量更新原理?
  5. Utility Process 的用途?与主进程的区别?
  6. 打包后白屏常见原因?如何排查?

前端面试知识库