【问题标题】:Electron - Main process vs Renderer ProcessElectron - 主进程与渲染进程
【发布时间】:2018-01-05 07:22:15
【问题描述】:

我觉得很难理解如何区分代码中的主进程和渲染器。

这是我的文件结构:

我想在服务端写一个方法,在前端调用。

我应该在哪里写?在主进程或渲染器进程中?

如果我在上图中的js文件夹中编写了该方法,它会被考虑在主进程还是渲染器进程中?

【问题讨论】:

  • “服务器端”是什么意思?你在某处运行服务器吗?至于 js 文件夹中的 JavaScript,这当然取决于您导入该 JavaScript 的位置。
  • @smarx 我有服务器,但根据我的研究,电子有它的已知节点(如果我错了,请纠正我)。你能解释一下如何让javascript方法在主进程中运行,我怎样才能让它在渲染器进程中运行?
  • @smarx 我打不开链接
  • 我不知道如何解决这个问题,抱歉。

标签: electron ipc


【解决方案1】:

我假设您的 main.js 文件是您创建 BrowserWindow(s) 的位置。这是您的主要流程,也是您编写服务器端方法的地方。

在您的主进程中,您可以像这样异步或同步地使用 ipcMain 创建一个方法:

// In main process.
const {ipcMain} = require('electron');
ipcMain.on('asynchronous-message', (event, arg) => {
  console.log(arg); // prints "ping"
  event.sender.send('asynchronous-reply', 'pong');
});

ipcMain.on('synchronous-message', (event, arg) => {
  console.log(arg);  // prints "ping"
  event.returnValue = 'pong';
});

然后您可以像这样在渲染过程中调用此方法(js 在 chromium 实例中运行):

// In renderer process (web page).
const {ipcRenderer} = require('electron');
console.log(ipcRenderer.sendSync('synchronous-message', 'ping')); // prints "pong"

ipcRenderer.on('asynchronous-reply', (event, arg) => {
  console.log(arg); // prints "pong"
});
ipcRenderer.send('asynchronous-message', 'ping');

在上面显示的 js 文件夹中编写方法将是渲染过程的一部分。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2017-06-01
    • 2017-05-01
    • 2019-10-27
    • 2020-04-09
    • 2022-01-11
    • 2022-01-15
    • 2018-06-13
    • 1970-01-01
    • 2017-10-07
    相关资源
    最近更新 更多