Electron初步【01】--主进程VS渲染进程&不同页面间共享数据

Electron使用了网页页面作为App的GUI,因此你可以将它看做是一个由JavaScript控制的一个小型的Chrome内核浏览器。

主进程VS渲染进程

主进程

在Electron中,跑package.json里的主脚本的进程叫作主进程。在主进程里跑的脚本可以通过创建web页面的窗口来扮演GUI角色。

主进程看起来就是一段脚本:

const electron = require('electron');
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;

var window = null;

app.on('ready', function() {
  window = new BrowserWindow({width: 800, height: 600});
  window.loadURL('https://github.com');
});
渲染进程

正因为Electron使用了chrome内核,才使得它多进程的结构也可以被我们使用。在Electron里的每个页面都有它自己的进程,叫作渲染进程。

在普通的浏览器里,网页页面跑在一个沙盒环境下,不能接触到native源码。而Electron则允许你在页面中使用Node.js的API,较低程度上的和操作系统进行交互。

渲染进程如同传统的HTML,但它可以直接使用Node模块:

<!DOCTYPE html>
<html>
  <body>
  <script>
    const remote = require('electron').remote;
    console.log(remote.app.getVersion());
  </script>
  </body>
</html>
主进程和渲染进程的不同

主进程通过实例化BrowserWindow,每个BrowserWindow实例都在它自己的渲染进程内返回一个web页面。当BrowserWindow实例销毁时,相应的渲染进程也会终止。

主进程负责掌管所有的web页面和它们相应的渲染进程。每个渲染进程都是相互独立的,它们只关心自己所运行的web页面。

在页面(渲染进程)中不允许调用原生GUI相关的API,那是因为在网页(渲染进程)中中掌管原生GUI很危险,易造成内存泄露。如果你想在网页中进行GUI的操作,渲染进程必须向主进程传达请求,然后在主进程中完成操作。

在Electron中,我们有几种连接主进程和渲染进程的方法,例如用于传送消息的ipcRendereripcMain模块,以及用于RPC的remote模块。

不同页面间共享数据

非常简单,使用HTML5 API就能完成。

Storage APIIndexedDB都是很好的选择。

你还可以使用Electron中提供的IPC系统。它在主进程中将一个对象储存为全局变量,然后可以通过remote模块操作它们:

// 在主进程里
global.sharedObject = {
  someProperty: 'default value'
};
// In page 1.
require('remote').getGlobal('sharedObject').someProperty = 'new value';

// In page 2.
console.log(require('remote').getGlobal('sharedObject').someProperty);
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值