祝你一切顺利!我对Electron比较陌生,在阅读了大量的文章之后,我仍然不知道应该把繁重的计算功能放在Electron的什么地方。我计划在这些函数中使用节点库,并且我已经阅读了许多文章,这些文章指出这些函数应该放在主进程中。然而,这是否有可能会增加主进程的开销,从而阻塞我的渲染器?这绝对不是想要的,我想知道为什么我不能把这些函数放在preload.js中。这对性能不是更好吗?此外,如果我只需要节点模块,只连接到我的API,如果我把这些函数放在preload.js中,还会有安全问题吗?很抱歉这些基本的问题,请让我知道!
感谢你可以使用在渲染线程中创建的web worker。它们不会阻塞。
但是你提到计划使用节点模块。因此,根据它们是什么,在主进程中运行它们可能更有意义。(但也请参阅https://www.electronjs.org/docs/latest/tutorial/multithreading,其中指出您可以独立于nodeIntegration
设置nodeIntegrationInWorker
)
您也可以在Node中使用https://nodejs.org/api/worker_threads.html,或者对于进程级分离,也可以使用https://nodejs.org/api/child_process.html。
注意,浏览器中的工作线程(以及渲染线程)不能共享内存。相反,你必须序列化它来来回传递。如果您的重型计算进程正在处理大型数据结构,请记住这一点。我注意到节点工作线程说它们允许线程之间共享内存。