Document different techniques to share objects
This has been discussed in
This commit is contained in:
parent
18631df88b
commit
fa734d7824
2 changed files with 37 additions and 0 deletions
|
@ -18,6 +18,40 @@ New features of Node.js are usually brought by V8 upgrades, since Electron is
|
||||||
using the V8 shipped by Chrome browser, the shiny new JavaScript feature of a
|
using the V8 shipped by Chrome browser, the shiny new JavaScript feature of a
|
||||||
new Node.js version is usually already in Electron.
|
new Node.js version is usually already in Electron.
|
||||||
|
|
||||||
|
## What are the different techniques to share objects between web pages?
|
||||||
|
|
||||||
|
To share objects between web pages (that is on the renderer side) the simplest
|
||||||
|
and more natural technique is to use a web standard API already available in all
|
||||||
|
browsers. A good candidate is the
|
||||||
|
[Storage API](https://developer.mozilla.org/en-US/docs/Web/API/Storage),
|
||||||
|
through either the
|
||||||
|
[`window.localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) property or the
|
||||||
|
[`window.sessionStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage) property.
|
||||||
|
Note that the Storage API allows only to store strings, so objects must be
|
||||||
|
serialized as JSON.
|
||||||
|
Another candidate is
|
||||||
|
[IndexedDB](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API).
|
||||||
|
|
||||||
|
Another technique, but this time specific to Electron, is to store objects in
|
||||||
|
the main process as a global variable and then to access them from the renderers
|
||||||
|
through the `remote` module:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// In main.js of browser process
|
||||||
|
global.sharedObject = {};
|
||||||
|
```
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// js in page-1.html
|
||||||
|
require('remote').getGlobal('sharedObject').someProperty = 'some value';
|
||||||
|
```
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// js in page-2.html
|
||||||
|
console.log(require('remote').getGlobal('sharedObject').someProperty);
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## My app's window/tray disappeared after a few minutes.
|
## My app's window/tray disappeared after a few minutes.
|
||||||
|
|
||||||
This happens when the variable which is used to store the window/tray gets
|
This happens when the variable which is used to store the window/tray gets
|
||||||
|
|
|
@ -47,6 +47,9 @@ In Electron, we have provided the [ipc](../api/ipc-renderer.md) module for
|
||||||
communication between the main process and renderer process. There is also a
|
communication between the main process and renderer process. There is also a
|
||||||
[remote](../api/remote.md) module for RPC style communication.
|
[remote](../api/remote.md) module for RPC style communication.
|
||||||
|
|
||||||
|
And finally there are different techniques [to share objects between web
|
||||||
|
pages](../faq/electron-faq.md#) of the same window or of different windows.
|
||||||
|
|
||||||
## Write your First Electron App
|
## Write your First Electron App
|
||||||
|
|
||||||
Generally, an Electron app is structured like this:
|
Generally, an Electron app is structured like this:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue