使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序

建立在 Chromium 和 Node 之上,为我们提供了很多封装好的模块,跟系统原生 API 互通。

运行环境

  • 浏览器上是 V8,可以操作 dom,bom
  • node 上也是 v8,但是 node 具有操控操作系统的能力如文件读写

而 Electron 就是两者结合

  • Chromium 为 Electron 提供了强大的 UI 能力,让我们采用吃饭家伙进行开发页面
  • Electron 内部支持 NodeJS 模块,让我们在写 UI 的同时,能够拥有操作系统底层 API 的能力,比如常用的 fs、path、child_process 模块

Electron 还具有跨平台的特性,不同系统底层提供的 API 不同,但 Chromium、Node 本身就跨平台,帮我们处理了大部分跨平台的兼容问题

三大核心

  • Chromium 用于显示网页内容。
  • Node.js 用于本地文件系统和操作系统。
  • Native APIs 用于使用经常需要的本机函数。

两大灵魂:主进程和渲染进程

主进程

  • 一个 Electron 只会存在一个主进程,但它可以存在多个渲染进程,由于 Electron 使用了 Chromium 来展示 UI 界面 (应用程序中被称为 BrowserWindow),自然而然地,Chromium 的多进程架构也被引入。
  • 当主进程每创建一个独立的 BrowserWindow 实例,Electron 都会初始化一个独立的渲染进程,隔离了不同窗口之间的环境,每一个渲染进程,只需要关心自己内部的 Web 页面。

主进程特点

  • 可以使用和系统对接的 ElectronAPI,比如菜单创建等
  • 支持 NodeJS,在主进程可以任意使用 NodeJS 的特性
  • 创建多个渲染进程
  • 有且只有一个,并且是整个程序的入口文件
  • 控制整个应用程序的生命周期

主进程调用 browserWindow 时,会生成一个渲染进程并对应一个浏览器窗口,渲染进程是负责渲染 Web 网页内容的。渲染进程的特点

  • 可以使用部分 Electron 的 API
  • 全面支持 NodeJS
  • 存在多个渲染进程
  • 可以访问 DOM API

进程通信