了解the "process model" in Electron会对你有很好的帮助。 正如Chromium所基于的,Electron使用一个加载“main.js”脚本的进程(称为 *main进程 *),以及另一个加载HTML文档(“index.html”)的进程(称为 *renderer进程 *),该进程依次加载网页脚本(“index.js”)。 如果主进程加载多个HTML文档,则可能有 * 多个 * 渲染器进程,但电子应用程序只有一个主进程。 要在“main.js”(或它导入的脚本)中定义一个函数,并从Web页面脚本中调用它,您需要[从呈现器进程向主进程发送一条消息],并在主进程中接收它。 该消息是通过调用ipcRenderer object that is part of Electron API上的send方法,由Web页脚本发送的:
2条答案
按热度按时间dgiusagp1#
了解the "process model" in Electron会对你有很好的帮助。
正如Chromium所基于的,Electron使用一个加载“main.js”脚本的进程(称为 *main进程 *),以及另一个加载HTML文档(“index.html”)的进程(称为 *renderer进程 *),该进程依次加载网页脚本(“index.js”)。
如果主进程加载多个HTML文档,则可能有 * 多个 * 渲染器进程,但电子应用程序只有一个主进程。
要在“main.js”(或它导入的脚本)中定义一个函数,并从Web页面脚本中调用它,您需要[从呈现器进程向主进程发送一条消息],并在主进程中接收它。
该消息是通过调用
ipcRenderer
object that is part of Electron API上的send
方法,由Web页脚本发送的:上面的命令将在通道“foo”上发送消息“bar”。要接收和处理消息(在您的情况下调用您选择的某个函数),您可以在“main”脚本中为消息设置一个监听器(例如
main.js
),并调用所需的函数(如下面的some_func
):不管怎么说,这是惯用的方法。
chy5wohz2#
在渲染器上使用ipcMain
ipcMain模块是一个事件发射器。在主进程中使用时,它处理从渲染器进程(网页)发送的异步和同步消息。从渲染器发送的消息将发射到此模块。https://www.electronjs.org/docs/latest/api/ipc-main/
示例:https://www.electronjs.org/docs/latest/tutorial/dark-mode