学习electron
2021-11-08 16:29:37 14 举报
AI智能生成
electron学习笔记
作者其他创作
大纲/内容
创建项目脚手架
mkdir my-electron-app && cd my-electron-app<br>
npm init
npm install --save-dev electron
打开dev调试
npm install electron-devtools-installer --save-dev
一些概念
主进程入口
package.json => main 指向的文件
主进程
一个App有且仅有一个主进程(main.js)
渲染进程
可以有多个
渲染进程中打开新的窗口v12版本以后
安装单独的模块
npm install --save @electron/remote
使用
1、主进程中引入(加载页面文件后):<br>
require('@electron/remote/main').initialize()
require("@electron/remote/main").enable(win.webContents)
2、子进程中使用:const { BrowserWindow } = require('@electron/remote')<br>
Note: In electron >= 14.0.0, you must use the new enable API to enable the remote module for each desired WebContents separately: require("@electron/remote/main").enable(webContents).<br><br>In electron < 14.0.0, @electron/remote respects the enableRemoteModule WebPreferences value. You must pass { webPreferences: { enableRemoteModule: true } } to the constructor of BrowserWindows that should be granted permission to use @electron/remote.<br>
参考
https://blog.csdn.net/qq_51634332/article/details/120575284
打开窗口
const win = new BrowserWindow({<br> width: 600,<br> height: 400,<br> webPreferences: {<br> preload: path.join(__dirname, renderFile)<br> }<br> })<br><br>win.loadFile('html file path')<br>
自定义菜单
自定义顶部菜单
const { Menu } = require('electron')<br><br>const template = [{<br> label: '文件',<br> submenu: [<br> { role: 'about' },<br> { type: 'separator' },<br> { role: 'quit' }<br> ]<br>}, {<br> label: '设置',<br> submenu: [<br> {<br> label: '打开electron官网',<br> accelerator: 'ctrl+N',//键盘快捷键<br> click: async () => {<br> const { shell } = require('electron')<br> await shell.openExternal('https://electronjs.org')<br> }<br> }<br> ]<br>}]<br><br>const menu = Menu.buildFromTemplate(template)<br>Menu.setApplicationMenu(menu)
自定义右键菜单
https://www.electronjs.org/zh/docs/latest/api/menu
v15以后通过IPC通讯
删除默认菜单
win.removeMenu()
打开外部链接
const { shell } = require('electron')<br>await shell.openExternal('https://electronjs.org')
主进程&渲染进程通讯
渲染进程可以发送同步 异步 消息给 主进程
渲染进程使用 ipcRenderer.send 或者 ipcRenderer.invoke 发送消息<br>主进程使用 ipcMain.on或者ipcMain.handle 接收消息
主进程只能发送异步消息 给 渲染进程
主进程向渲染进程通讯<br><br>主进程使用 win.webContents.send 发送消息<br>渲染进程使用 ipcRenderer.on 接收消息
渲染进程向渲染进程通信
ipcRenderer.sendTo
打包&发布应用
0 条评论
下一页