electron入门心得
安装
在macOS上全局安装electron
1 | $ npm i -g electron --unsafe-perm=true --allow-root |
部署quick-start
1 | $ git clone https://github.com/electron/electron-quick-start |
辅助工具
electron-forge
1.安装electron-forge
1 | $ npm install -g electron-forge |
2.初始化项目
1 | $ electron-forge init my-new-project --lintstyle=standard --template=react |
3.启动项目
1 | $ electron-forge start |
4.打包项目
1 | $ electron-forge package |
electron-vue
1 | # 安装 vue-cli,使用脚手架样板代码初始化项目 |
主进程与渲染进程
electron的开发主要涉及到两个进程的操作:Main主进程,Renderer渲染进程。
主进程主要通过nodejs、chromium、native apis来实现一些系统或底层的操作,比如操作剪贴板等。
渲染进程主要通过chromium来实现web界面。
两个进程通过ipcMain
和ipcRenderer
来进行通信
主进程向渲染进程发消息
main.js文件:1
2
3
4// 当页面加载完成时,会触发`did-finish-load`事件。
win.webContents.on('did-finish-load', () => {
win.webContents.send('main-process-messages', 'webContents event "did-finish-load" called');
});
renderer.js文件1
2
3
4
5
6
7// 引入ipcRenderer对象
const electron = require('electron');
const ipcRenderer = electron.ipcRenderer;
// 设置监听
ipcRenderer.on('main-process-messages', (event, message) => {
console.log('message from Main Process: ' , message); // Prints Main Process Message.
});
渲染进程向主进程发消息
renderer.js文件1
2
3
4
5
6
7
8// 引入ipcRenderer对象
const electron = require('electron');
const ipcRenderer = electron.ipcRenderer;
ipcRenderer.send('asynchronous-message', 'hello');
ipcRenderer.on('asynchronous-reply', (event, arg) => {
console.log('asynchronous-reply: %O %O', event, arg);
});
main.js文件1
2
3
4ipcMain.on('asynchronous-message', (event, arg) => {
// 返回消息
event.sender.send('asynchronous-reply', 'ok');
});