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);
    原文作者:ecmadao
    原文地址: https://segmentfault.com/a/1190000005126719
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞