【发布时间】:2021-04-03 18:17:16
【问题描述】:
我想在单击按钮时最小化屏幕。此单击处理程序位于渲染进程内。我已经看到了很多可能的解决方案,它们使用来自电子的远程对象并直接最小化窗口。另一种解决方案是使用 ipcRenderer 向 main 发送事件,然后通过主进程将其关闭。我应该使用哪种解决方案(如果其中任何一种都有优点/缺点)?
我已经看到很多关于电子安全性的 cmets(特别是在使用远程时),所以这就是我想知道的原因。
【问题讨论】:
标签: electron
我想在单击按钮时最小化屏幕。此单击处理程序位于渲染进程内。我已经看到了很多可能的解决方案,它们使用来自电子的远程对象并直接最小化窗口。另一种解决方案是使用 ipcRenderer 向 main 发送事件,然后通过主进程将其关闭。我应该使用哪种解决方案(如果其中任何一种都有优点/缺点)?
我已经看到很多关于电子安全性的 cmets(特别是在使用远程时),所以这就是我想知道的原因。
【问题讨论】:
标签: electron
Electron 核心团队强烈反对使用远程 (https://medium.com/@nornagon/electrons-remote-module-considered-harmful-70d69500f31),并且将通过移至用户空间模块从核心中弃用它。通过invoke处理程序的新ipc api表面应该能够提供足够的便利来使用ipc。
【讨论】:
基本上,电子的远程模块有助于使事情变得简单。它使您可以直接从基于 gui 的文件中使用电子方法。在很多情况下,我更喜欢它,因为它简单且不易混淆。 但是,您应该更喜欢通过 ipc 而不是使用远程模块发送数据的一些情况包括-
1.如果您的应用需要快速
如果您的应用是基于时间的,那么您应该更喜欢 ipc,因为远程模块比主模块慢得多。
2.如果您的应用需要非常安全,并且与汇款等相关的事情
由于远程模块存在于我们的应用程序的前端,它更容易受到安全问题的影响并且可以更改。在后端处理主要任务将更加安全。
但在大多数情况下,通常使用远程模块,包括-
1.您的应用太大且太复杂
您可以使用远程模块来避免代码的复杂性
2.您的应用试图在运行中保持透明
那么选择什么?
您可以将远程模块用于代码中的某些任务,而将 ipc 用于其他一些任务。由于远程模块不会造成很大的危害,因此是首选。此外,您可以通过 ipc 发送一些数据并为其他人使用远程模块。
【讨论】: