electron 24 版本中 preload 脚本 如何把主进程的变量传递给渲染进程 使用 不用用
时间: 2023-12-10 10:41:26 浏览: 27
在 Electron 24 及以上版本中,preload 脚本可以通过 `window.contextBridge` 将主进程的变量暴露给渲染进程。具体步骤如下:
1. 在主进程中创建一个全局变量:
```javascript
global.myVariable = 'Hello World';
```
2. 在 preload 脚本中使用 `contextBridge` 将变量暴露给渲染进程:
```javascript
const { contextBridge } = require('electron');
contextBridge.exposeInMainWorld('myAPI', {
myVariable: global.myVariable
});
```
3. 在渲染进程中使用暴露的变量:
```javascript
const myVariable = window.myAPI.myVariable;
console.log(myVariable); // Hello World
```
需要注意的是,在渲染进程中直接访问 `global` 变量是不安全的,因此需要使用 `contextBridge` 来进行安全的变量传递。
相关问题
preload 脚本 如何把主进程的变量传递给渲染进程 使用
在 Electron 中,主进程和渲染进程是通过 IPC(进程间通信)进行通信的。因此,如果你想要从主进程向渲染进程传递变量,可以通过以下方式:
1.在主进程中使用 `webContents.send()` 方法将变量发送到渲染进程。例如:
```
// 在主进程中
const { ipcMain } = require('electron');
const mainWindow = ...; // 获取到主窗口对象
ipcMain.on('preload-data', (event, data) => {
mainWindow.webContents.send('preload-data', data);
});
```
2.在渲染进程中,可以使用 `electron.remote` 模块获取主进程中的变量。例如:
```
// 在 preload 脚本中
const { remote } = require('electron');
const { ipcRenderer } = require('electron');
// 获取主进程的变量
const data = remote.getGlobal('data');
// 将变量发送到渲染进程
ipcRenderer.send('preload-data', data);
```
同时,需要在渲染进程的 HTML 文件中引入 preload 脚本,例如:
```
<script src="./preload.js"></script>
```
这样,就可以在 preload 脚本中获取主进程的变量,并将其传递给渲染进程。
preload 脚本 如何把主进程的变量传递给渲染进程 使用 ipcRenderer
要在 preload 脚本中将主进程的变量传递给渲染进程,可以使用 Electron 的 ipcRenderer 模块。
首先,在主进程中使用 ipcMain 模块将变量发送到渲染进程。例如:
```javascript
const { ipcMain } = require('electron')
ipcMain.on('send-variable-to-renderer', (event, variable) => {
mainWindow.webContents.send('variable-from-main', variable)
})
```
其中,`mainWindow` 是主窗口的引用,`variable` 是需要传递的变量。
然后,在 preload 脚本中,可以使用 ipcRenderer 模块监听 `variable-from-main` 事件,并将变量传递给渲染进程。例如:
```javascript
const { ipcRenderer } = require('electron')
ipcRenderer.on('variable-from-main', (event, variable) => {
console.log('Variable from main process:', variable)
})
```
这样,当主进程发送 `send-variable-to-renderer` 消息时,preload 脚本就可以接收到 `variable-from-main` 消息,并将变量传递给渲染进程。