Electrom is a resource management solution for Electron applications, which is convenient for performance management and friendly debugging of multiple windows.
xudafeng |
yantze |
sriting |
snapre |
---|
This project follows the git-contributor spec, auto updated at Tue May 03 2022 11:32:04 GMT+0800
.
npm i electrom --save-dev
npm run dev
// main process: import electrom
import { EVENT_DATA_CHANNEL_NAME, Monitor } from 'electrom';
const monitor = new Monitor();
mainWindow.webContents.on('dom-ready', () => {
monitor.on(EVENT_DATA_CHANNEL_NAME, (data: any) => {
mainWindow.webContents.send(EVENT_DATA_CHANNEL_NAME, data);
});
monitor.bindEventToWindow(mainWindow);
monitor.start();
});
// renderer process: import electrom renderer
import { StatusBoard, PerfBoard, EVENT_DATA_CHANNEL_NAME, EVENT_ACTION_CHANNEL_NAME } from 'electrom/renderer';
const { ipcRenderer, shell } = window.electron;
<StatusBoard
eventDataChannelName={EVENT_DATA_CHANNEL_NAME}
eventActionChannelName={EVENT_ACTION_CHANNEL_NAME}
ipcRenderer={ipcRenderer}
shell={shell}
/>
'use strict';
const { contextBridge, ipcRenderer } = require('electron');
contextBridge.exposeInMainWorld(
'electron',
{
ipcRenderer: {
send: (channel, ...args) => ipcRenderer.send(channel, ...args),
on: (channel, listener) => ipcRenderer.on(channel, listener),
removeListener: (channel, listener) => ipcRenderer.removeListener(channel, listener),
},
}
)
Please set this script's path as webPreferences.preload
of BrowserWindow
.
import React from 'react';
import StatusBoard from 'electrom/src/StatusBoard';
import { ipcRenderer, shell } from 'electron';
function() {
return (
<StatusBoard
eventDataChannelName="electrom:monitor:data"
eventActionChannelName="electrom:monitor:action"
ipcRenderer={ipcRenderer}
shell={shell}
/>
);
}
import React from 'react';
import PerfBoard from 'electrom/src/PerfBoard';
function() {
return (
<PerfBoard />
);
}
- heapdump
The MIT License (MIT)