从主应用到渲染器在电子应用中发出自定义事件

Daw*_*awn 5 javascript node.js electron

因此,我知道这是有效的,因为我尝试了它,但是没有在任何地方进行记录,因此我问是否可以使用这种做法,并且不必担心将来会停止工作(众所周知,Electron和nodejs可以打破常规版本到另一个)

这是我正在谈论的实践类型:

main.js

app.emit('did-something', param1, param2);
Run Code Online (Sandbox Code Playgroud)

renderer.js(浏览器窗口)

const {app} = require('electron').remote;

app.on('did-something', (param1, param2) => {
  $('#whatever').text(param1);
});
Run Code Online (Sandbox Code Playgroud)

本质上,我试图将所有不直接处理HTML的代码(例如数据库交互)移到main.js中,并且我想确保这是正确的方法。

另外,如果我使用自己的方法和属性扩展app对象,可以吗?

Tim*_*Tim 5

主要流程几乎应始终仅用于创建BrowserWindows和访问文档中标记为只能通过主要流程访问的电子API。

请查看本文,以获取有关主/渲染器及其用途之间差异的更多详细信息。Chromium流程体系结构意味着主流程中的任何阻塞代码也将阻塞渲染器。

您所有的应用程序代码都应位于渲染进程中,如果您要执行长时间运行的进程,则应将其撞入Web Worker或其他渲染器进程中。电子遥控可以帮助您做到这一点。

如果要在主进程和渲染器进程之间进行通信,则应使用已记录的 API的