使用electron
有一阵子了,随着项目推进,需要研究的东西也逐渐多起来。总结了以下,问题主要出现在:
- 跨平台兼容性
- 新的功能需求
electron
渲染进程模拟浏览器环境
electron
渲染进程默认为nodejs
环境,在里面你可以调用require
引入第三方模块,但有时候我们想要的是一个真实的浏览器环境。electron
需要做的配置如下:
var mainWindow = new BrowserWindow({
resizable: true,
width: size.width,
height: size.height,
title: 'HolaStudio',
webPreferences:
{
nodeIntegration: false,
preload: path.join(__dirname, 'tangide', 'expose-window-apis.js')
}
});
创建BrowserWindow
的时候指定nodeIntegration
为false
。 这样在electron
内置浏览器里面不会有module
和require
全局变量。
渲染进程与主进程之间的通信
electron
下主进程与渲染进程之间的通信主要有如下几种方式:
- 使用remote
模块
- 使用ipc
做进程间通信
这里我选择了第二种方式:
// In main process.
const ipcMain = require('electron').ipcMain;
ipcMain.on('asynchronous-message', function(event, arg) {
console.log(arg); // prints "ping"
event.sender.send('asynchronous-reply', 'pong');
});
ipcMain.on('synchronous-message',