Electron
-
一款应用广泛的跨平台的桌面应用开发框架
-
Electron的本质是结合了Chromium、Node.js、Native API -
使用
HTML、CSS、JS等Web技术构建桌面应用程序。
Electron 流程模型
单一进程
网页浏览器是一个极其复杂的应用程序。除了显示网页内容的主要能力之外,他们还有许多次要的职责,如:管理众多窗口(或标签页)和加载第三方扩展
在早期,浏览器通常使用单个进程来处理所有功能,虽然这 样做打开每个标签页的开销较少,但也同时意味着一个网站的崩溃或无影响会影响到整个浏览器
多进程模型
为了解决这个问题,Chrome 团队决定让每个标签页在自己的进程中渲染, 从而限制了一个网页上的有误或恶意代码可能导致的对整个应用程序造成的伤害。 然后用单个浏览器进程控制这些标签页进程,以及整个应用程序的生命周期。
Electron 应用程序的结构非常相似。将控制两种类型的进程:主进程 和 渲染器进程。
主进程
每个 Electron 应用都有一个单一的主进程,作为应用程序的入口点。 主进程在 Node.js 环境中运行,这意味着它具有 require 模块和使用所有 Node.js API 的能力。
窗口管理
主进程的主要目的是使用 BrowserWindow 模块创建和管理应用程序窗口。
BrowserWindow 类的每个实例创建一个应用程序窗口,且在单独的渲染器进程中加载一个网页。 您可从主进程用 window 的 webContent 对象与网页内容进行交互。
const { BrowserWindow } = require('electron')
const win = new BrowserWindow({ width: 800, height: 1500 })
win.loadURL('https://github.com')
const contents = win.webContents
console.log(contents)
注意:渲染器进程也是为
web embeds而被创建的,例如BrowserView模块。 嵌入式网页内容也可访问webContents对象。
由于 BrowserWindow 模块是一个 EventEmitter